후기) 22년 넥슨 채용형 인턴십 넥토리얼 2기 코딩 테스트 - 불합격


후기) 22년 넥슨 채용형 인턴십 넥토리얼 2기 코딩 테스트

6문제가 나왔고, 3시간 30분 동안 풀어야했다.

난이도는 전체적으로 쉬웠던 것 같은데 2번 문제는 어떻게 푸는지 아직 잘 모르겠다.

1번

너무 쉬워서 5분만에 풀고 다음 문제로 넘어갔다. 다른 문제에 너무 집중했던 탓인지 잘 기억이 안난다.

2번

어떤 문자열(original)에서 주어진 순서대로 문자를 하나씩 지우며, 그 안에 다른 문자열(keyword)가 존재하는지 확인하는 문제였는데, 아직 접근법을 잘 모르겠다.

3번

어떤 리스트에 값을 하나씩 추가하면서 그 리스트에서 k번째로 큰 숫자만 더한 합을 구하는 문제였는데, 원소를 추가할 때마다 정렬을 하는 경우 추가하는 원소 개수(m) * 정렬(nlog)의 시간 복잡도가 걸려 총 O(mnlog)이 걸려 문제를 주어진 그대로 구현하면 시간초과가 날 것 같았다.

나는 우선순위 큐를 사용해 최대 힙과 최소 힙을 만들어 k번째 수보다 큰 수는 최소 힙에, k번째 수보다 작은 수는 최대 힙에 넣어 k번째 숫자만 최대 힙에서 바로 뽑아 더할 수 있도록 구현하였다.

이렇게 구현할 경우 더해야 하는 숫자 m개, 힙에 넣고 재구조화 하는 시간 복잡도 O(logn)으로 시간 내에 해결할 수 있을 것이라고 생각했다.

4번

특정 컬럼 기준으로 행을 그룹화한 다음 최대값을 뽑아내어 다른 테이블과 조인한 뒤 다시 다른 컬럼으로 그룹화하여 그 그룹별 개수를 구하는 문제였다.

inner join을 3번 사용한 sql로 답을 제출했는데 테스트 케이스는 통과했지만 좀 긴가민가하다.

5번

무방향 그래프에서 시작점에서 도착점까지 최단 거리를 구하는 문제였다.

도착 지점에 가기 전에 무조건 어느 두 점을 거쳐서 지나가야 했는데 시작점과 해당 두 점을 기준으로 다익스트라 알고리즘을 세 번 적용하여 문제를 해결하였다.

6번

api를 get방식으로 호출하여 전송 받은 데이터를 가공하는 문제였다.

자바로는 api를 호출하는 법을 아직 몰라 자바스크립트로 언어를 바꾸어 fetch api로 api를 호출하려고 했는데 다음의 에러가 나오면서 fetch를 사용할 수 없었다.

experimentalwarning: stream/web is an experimental feature. this feature could change at any time

어떻게 해야할지 고민하다가 axios 라이브러리를 추가해 사용해봤는데 다행히 잘 작동했다.

총평

6문제 중 5솔로 최근 봤던 코딩 테스트 중 가장 성적이 좋았다. 아마 무난하게 통과하지 않을까 싶다.

결과

이번 주 금요일에 불합격 통보를 받았다.

나름 꽤 잘풀었다고 생각해서 당연히 합격일 줄 알았는데 예상치 못한 결과가 나와 너무 아쉬웠다.