저는 취준생 시절, 대학교 4학년 때 네카라 신입 코딩 테스트를 모두 통과하고 면접까지 봤고, 열심히 회사를 다니고 있습니다.
그 때 나름 코딩 테스트를 잘 했다고 자부할 수 있는데, 다른 분들에 비하면 상대적으로 노력을 많이 하진 않았던 것 같습니다.
특히 대학교 4학년 때는 네이버 부스트캠프라는 교육 기관에서 FE나 서버 공부를 하느라 알고리즘 공부를 거의 하지 못했습니다. 네이버 부스트캠프라는 교육이 끝나고 연계되는 취업 프로그램을 통해 취업을 할 계획이었고, 나중에 혹시 코딩 테스트를 볼 수도 있다는 생각에, 신입 코딩 테스트들만 보면서 감만 잃지 않으려 했죠.
그런데 오히려 한창 알고리즘 공부하고 문제를 많이 풀던 3학년 때는 다 떨어졌던 기업들이, 알고리즘 공부를 반년 거의 하지 않은 상태에서 다시 본 4학년 때는 붙었습니다.
제가 떨어졌던 원인을 분석하고 그 문제를 해결할 수 있어서 더 적은 노력으로도 붙을 수 있었습니다.
그럼 본론으로 가서 코딩 테스트를 잘 보는 방법은 뭘까요?
일단 코딩 테스트를 왜 볼까요?
사실 알고리즘을 현업에서 쓸 일은 거의 없습니다.
그런데도 왜 코딩 테스트를 볼까요?
제 개인적인 생각은
1. 주어진 문제 상황을 분석하는 능력 파악
2. 그 문제를 코딩을 통해 해결하는 능력
3. 추가적으로 최소한의 알고리즘이나 자료 구조 지식을 갖췄는지 파악
이라고 생각합니다.
사실 1,2번이 핵심이죠.
그리고 코딩 테스트를 잘 보는 방법도 1,2번을 잘 나눠서 보고 있는가가 핵심입니다.
일단 3번인 기본적인 알고리즘, 자료구조를 아는 것은 기본입니다.
기본적이라함은 높은 수치가 아니라, 정말로 학교에서 배우는 수준이면 충분합니다.
DFS, BFS, DP, 큐, 스택, 힙 등등이요.
이걸 모르신다면 일단 개념에 대한 학습이 필요합니다. 이건 어렵지도 않고 많지 않은 시간만 투자하면 누구나 가능한 부분입니다.
수학에서 미분/적분 개념을 모르면 당연히 미분/적분 문제를 풀 수가 없죠. 코딩테스트도 똑같습니다.
그리고 이제 문제를 보았을때 두 단계로 나누어보아야하는데,
1번, 내가 이 문제를 보고, 어떤 알고리즘/자료구조를 써야하는지 파악이 된다.
어떤 방법으로 풀면 이 문제가 풀릴 것이다!가 보이는지 파악해야합니다.
보통 문제를 많이 풀었는데, 막상 코테를 가니까 문제를 못 풀더라는 1번을 못하는 경우가 많습니다.
문제를 많이 풀어봐서 어떻게 푸는지 알면 코딩은 가능한데, "어떻게 푸는지" 알아내는 능력이 없는 경우죠.
그 다음으로는
2. 내가 생각한 방법을 구현 가능한가 입니다.
문제 어떻게 풀지 알겠는데 시간이 부족하더라는 2번이 많죠.
문제 해결법을 코딩하는 능력이 부족해서 시간이 부족한 경우죠.
회사에서 원하는 인재는 알고리즘을 잘하는 인재가 아니라, 문제 상황을 잘 파악하고 해결하는 인재입니다.
코딩 테스트에서는 어려운 알고리즘 지식을 요구하는 문제는 거의 없고, 있다 하더라도 그 문제를 못 풀어도 합격인 경우가 많습니다.
1,2번을 분리하지 않고, 하나로 보기 때문에, 준비 과정에 낭비가 많고, 혹은 자신의 약점을 보완하지 못해 코딩 테스트를 빈번히 떨어지는 경우가 많은 것 같습니다.
내가 왜 떨어지는지 분석해보고 싶거나, 더 효율적으로 준비하고 싶으시다면 내가 1,2번 중 어떤 점이 부족한지 한번쯤 생각해보시면 좋을 것 같습니다.
시간이 되면, 이런 능력을 어떻게 길러야하는지도 써보겠습니다.