본문 바로가기

코딩테스트8

2021 Summer Coding - 여름방학 스타트업 인턴 프로그램 코딩 테스트 후기 5월 9일 프로그래머스에서 주최하는 여름방학 스타트업 인턴 프로그램에 참여하였다. 위와 같은 진행 일정을 통하여 많은 스타트업 기업들 중 5곳에 한 번에 지원하게 해주는 프로그래머스의 아주 좋은 프로그램이다! 코딩 테스트를 일정 수준 이상 통과해야지만 지원한 기업에 이력서가 전달된다고 설명에 상세히 나와있고 코딩 테스트는 2시간 동안 이루어졌다. 코테의 문제 난이도 자체는 평이했다. 그렇게 어려운 문제도 없었고 엄청나게 쉬운 문제도 없었다. 알고리즘 3문제 + SQL 1문제로 구성된 코딩 테스트였는데 나는 SQL을 전혀 공부해본 적도 SQL 언어를 써본 적도 제대로 없어서 4번 문제는 자연스럽게 버렸고 앞에 3문 제 만 다 맞추자는 생각으로 코테에 참여를 했다! 1번 문제를 푸는데 20분이 걸렸다. 딱히.. 2021. 5. 15.
2021 카카오 채용연계형 인턴십 코딩테스트 후기 결론부터 말하자면 역시 카카오는 인턴 코테도 어렵다. 개인적으로 느끼기엔 이전 인턴십 코딩 테스트에 비해서는 난이도가 낮았던 편인 것 같다. 다만 나는 테스트케이스를 다 못 잡아서 광탈할 것이 지금도 뻔히 보이기는 하지만 그래도 나름 여태까지 나왔던 카카오 중에서는 제일 쉬웠다고 생각이 든다. (2018 공채 제외) 아직 프로그래머스에 문제가 공개되진 않았지만 카카오는 문제에 관련된 모든 내용을 써도 상관이 없으니 조금 자세히 기술해보려 한다. 1번은 구현 문제였다. 문자열을 입력받아 해당 문자열을 숫자로 변환하여 출력하는 문제였다. 예를 들어 1five6seven 과 같은 문자열이 들어오면 1567로 return 하는 문제였다. 풀이 방법이야 워낙 다양하게 나올 수 있는 문제였고 다른 함정도 없을 것으.. 2021. 5. 12.
2021 라인 인턴 코딩테스트 후기 오래간만에 써보는 코딩 테스트 후기 아쉬운 점이 많았다.. 네이버 코딩 테스트 칠 때까지 거의 온 힘을 쏟았는지.. 그것도 망했는데 이것도 망했다. 사실 예외 케이스를 처리한다는 걸 부담을 너무 느껴서인지 모르겠지만.. 무튼 망했다. 그리고 결과는 당연히 탈락. 물론 1주일도 안돼서 결과가 나와서 좀 편하긴 했는데 그래도 역시 떨어지는 걸 보는 건 좀 그렇긴 하다. 네이버와는 다르게 오픈북에 녹화도 없었고 마음 편히 볼 수 있었다. 총 4문제를 2시간 동안 풀게 됐는데 당연히 4번은 풀지도 못했다. 4번을 당연히 못 풀 거라는 생각에 1번 2번 3번만 완벽하게 풀자는 생각이었다. 1번을 푸는데 20분이나 걸렸다. 진짜 정말 많이 본 유형이었고 당연히 쉽게 금방 풀 것이라 생각하고 10분도 안돼서 첫 코드.. 2021. 5. 11.
가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, .. 2021. 4. 28.
큰 수 만들기 Programmers 프로그래머스 C++ 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 number k return "1924" 2 "94" .. 2021. 4. 26.
2021 네이버 신입공채 코딩테스트 후기 7시간 전 인생 3번째 코딩 테스트를 보았다. 이전 네이버 신입 공채 코딩 테스트 후기들을 찾아보면 2시간 동안 3문제를 풀어야 하고 화상 녹화라던지 화면 공유도 없는 줄 알았는데 음.. 다 해야 하고 더블 모니터도 불가능이라서 모니터도 없애야 했고 준비할게 많았다. 2021년 4월 24일 토요일 14시~16시까지 진행된 2021년 네이버 신입 공채 코딩 테스트는 총 4문제를 2시간 안에 푸는 방식으로 진행되었다. 문제를 풀 수 있는 프로그래머스 사이트를 제외한 나머지 모든 사이트에 대한 참조 금지, 개인 노트 사용 금지 등 제약이 많긴 했다. 하지만 코딩 테스트 진행 도중 볼 수 있는 각 언어에 대한 레퍼런스 사이트는 주어져서 만약 본인이 사용하는 언어에 대한 단순 사용방법이 아니라 레퍼런스 사이트를 .. 2021. 4. 24.
Greedy Algorithm 탐욕법 정리 Dynamic Programming처럼 현 단계에서 이전 단계를 이끌어내는 기법에 비하여 Greedy Algorithm은 현 단계에서 가장 최적인 다음 단계를 만들어내는 기법이다. Greedy Algorithm의 가장 기본적인 원리는 최댓값 max[n] 혹은 최솟값 min[n] 에서 배열의 다음 값인 arr[n+1]의 값을 더하거나 빼서 max[n+1] 혹은 min[n+1]을 만들어내는 방식이다. 예를 들어서 a라는 지점에서 d라는 지점까지 가는 방법이 a->b->d a->c->d 2가지인 경우라고 생각을 해보자. a->b까지 걸리는 시간이 1시간, b->d까지 걸리는 시간이 1시간이고 a->c까지 걸리는 시간이 1시간 40분, c->d 까지 걸리는 시간이 40분 일 경우 우리는 당연하게도 a->b->d.. 2021. 4. 22.
Dynamic programming 동적 계획법 정리 동적 계획법의 개념은 문제에서 주어진 최종적인 결괏값을 만드는 것을 여러 개로 쪼개어 그 아랫단계로 만들어 내는 것이다. 즉 i번째의 결과를 도출해내기 위하여 i-1번째를 보고 i-1번째를 만들기 위하여 i-2번째를 참조하는 식이다. 다만 이런 예시는 단순히 반복문만으로 하드코딩을 하더라도 풀어낼 수 있다. 하지만 만약 i번째의 결과를 만들기 위하여 3가지 경우의 수가 존재한다면? DP[i] = DP[i-1] + DP[i-2] DP[i] = DP[i-2] + DP[i-3] DP[i] = DP[i-1] + DP[i-3] 와 같은 점화식이 나오고 그중에서 최댓값 혹은 최솟값을 구해야 한다면 반복문으로는 풀 수 없는 한계점에 이르게 된다. 단순히 3가지의 경우만 있더라도 10번째 최솟값을 구하기 위해선 3^1.. 2021. 4. 21.