본문 바로가기

코딩테스트

[넥토리얼] 2024 넥슨 넥토리얼 코딩테스트 후기

2024 넥슨 넥토리얼 코딩테스트 후기

넥슨 채용형 인턴십 프로그램인 넥토리얼의 코딩 테스트를 보았습니다.

이번 코딩 테스트는 넥토리얼에 지원한 모든 사람들이 사전 서류 합불 없이 공통으로 응시하는 방식이었습니다.

전형 안내 메일에는 전체 전형의 세부 일정과 함께 코딩테스트의 결과 발표 날짜도 안내되어 있어, 언제 발표가 날지 조마조마하며 기다릴 필요는 없을 것 같아 다행입니다.

시험 시간

총 시간은 210분, 즉 3시간 반이었습니다. 오후 5시부터 9시 사이에 진행되었으며, 210분을 모두 활용하려면 최소한 5시 30분 이전에는 시작해야 하는 구조였습니다.

후기를 작성하며 다시 확인해보니, 테스트 시작 후 210분이 지나면 자동으로 마감되고 제출된다고 안내되어 있는데, 저는 시험 마무리 즈음에 이것 때문에 아찔해졌던 순간이 있었습니다.

‘테스트 시작 후 210분이 경과하면’ 자동 마감 및 제출이니, 만약 늦게 시작하여 210분을 채우지 못한 상태에서 제한 시간을 넘기면 어떻게 되는지는 모르겠습니다. 중요한 것은, 제 시간에 제대로 제출하는 것이겠지요.

결과는 반드시 제 손으로 제출해야 합니다.

시험 플랫폼

 

코딩 테스트 플랫폼은 HackerRank 였습니다. 해외 코딩 테스트 사이트로, 백준보다는 프로그래머스와 비슷한 느낌이었습니다. 프로그래머스처럼 입력값이 함수 인자로 주어지기 때문에, 입력 시퀀스를 직접 작성하지 않아도 되어 그나마 조금 편했습니다.

시험 문제

문제는 총 6문제였습니다.

6문제를 주고 210분을 배정해주길래, 사실 2시간 반 정도면 충분하지 않을까 싶었는데… 생각보다 훨씬 어려웠습니다. 결국 3시간 반을 모두 사용해 문제를 풀어야 했습니다.

3시간쯤 지나니 집중력이 흐트러지면서 머리도 아프고 체력적으로도 힘들어지더군요. ‘정말 인턴 뽑는 코딩 테스트 수준이 맞나?’ 싶을 정도였습니다.

체감상 3문제는 비교적 풀만 했고, 2문제는 본격적인 알고리즘 풀이가 필요했습니다. 나머지 하나는 끝내 완전히 풀어내지는 못했습니다.

사용 언어

코딩 테스트에 사용할 언어는 자유롭게 선택할 수 있었습니다.

다만, 코딩 테스트 안내 메일에는 지원하는 포지션에 적합한 개발 언어로 진행할 것을 권장한다고 명시되어 있었습니다

저는 그동안 대부분의 코딩 테스트를 Python으로 준비해왔고, C++과 C#은 언어 감각을 유지할 정도로만 연습해왔습니다. 그러나 안내 메일의 권고 문구를 보고, 이번에는 C#으로 코딩 테스트에 임했습니다. 저는 유니티 개발자이니까요.

C#으로 풀면서 파이썬의 짧은 코드와 리스트 컴프리헨션이 그리워지는 순간이 한두 번이 아니었지만, 기본적인 문제 풀이 과정과 접근 방식은 같아서 큰 문제는 없었습니다.

그런데 문제를 풀면서 한 문제에 45분 이상 걸린 순간이 있었습니다. 시간이 갈수록 마음이 조급해졌고, 써야 하는 코드는 많고 길어지다 보니 손에 식은땀까지 났습니다. 단순히 for문 하나 작성하는 데도 왜 그렇게 오래 걸리는지… 그때는 순간적으로 '파이썬으로 할 걸 그랬나?' 하는 생각이 들었지만, 어쨌든 풀 만큼 풀었으니 잘 한 것 같습니다.

후기

3시간 반을 모두 사용했음에도 불구하고 끝내 모든 문제를 완벽히 풀지 못한 걸 보면, 이번 테스트는 저에게는 상당히 어려웠던 것 같습니다. 풀만한 3문제가 있긴 했지만, 나머지 3문제가 꽤 난이도가 있어서 쉽지 않았습니다.

결국 5문제를 해결했고, 남은 한 문제는 테스트 케이스 15개 중 10개를 맞췄지만 나머지 5개에서 시간 초과가 발생했습니다.

자료구조와 알고리즘

이번 시험은 자료구조와 알고리즘에 대한 이해가 요구되는 시험이었습니다.

제가 풀이에 사용했던 자료구조와 알고리즘은

  • 우선순위 큐
  • 투 포인터
  • DFS (깊이 우선 탐색)
  • 이진 탐색

등이 있었습니다.

 
 
 

시간 복잡도 문제로 최적화에 실패한 문제는 세그먼트 트리를 활용했어야 했나 하는 아쉬움이 남긴 하지만, 어차피 시간이 부족해서 끝까지 풀지 못했을 테니 사실 크게 아쉽지는 않습니다. 테스트 케이스 10개가 맞고 나머지는 시간초과가 난 걸 보면, 코드 자체가 틀린 코드는 아니었지 싶습니다. 이게 패착이 되지는 말아야 할 텐데 말입니다...

 

정답 제출 당시..

각 문제마다 개별 제출(submit)을 해야 했고, 모든 문제를 푼 후에는 전체 제출 옵션도 있었습니다.

저는 전체 제출 기능이 있는 줄 모르고, 마지막 5분까지 문제를 풀다가 최종 점검도 할 겸 각 문제의 제출 상태를 확인하려고 ‘All’ 탭을 눌렀다가 전체 제출 기능을 발견했습니다.

자칫하면 3시간 반 동안 애써 푼 문제들을 제출하지 못한 채 끝날 뻔했죠. 다시 생각해도 아찔한 순간이었습니다.

그런데 후기 글을 작성하면서 전형 안내 메일을 다시 보니, 210분을 다 채우면 자동으로 제출된다고 하더군요. 저는 마치 시험 마킹을 다 해놓고 OMR을 못 낸 사람처럼 될 뻔한 줄 알았는데, 다행히 그건 아니었던 것 같습니다. 그래도 제 손으로 직접 제출을 완료했으니 마음이 편하기도 하고 여러 모로 걱정할 것이 없어 다행이라는 생각이 듭니다.

정리하며

코딩테스트를 그래도 열심히 준비했다고 생각했는데, 실전이라는 부담감 때문인지, 아니면 여전히 배움이 부족한 탓인지 제게는 꽤나 어려운 시험이었습니다. 아직 멀었다는 생각도 들지만, 그래도 좋은 결과가 있었으면 좋겠다는 마음으로 기다리려고 합니다.