2019 공채 코딩테스트 리뷰

지난 9월 초부터 지금까지 거의 매 주마다 몇 개의 코딩테스트를 경험했다. 7월에 파이썬으로 코딩테스트 스터디를 한 이후에 본격적으로 테스트를 본 것은 처음이었다. 갑자기 공고들이 쏟아져 나오는 바람에 여행도 취소했고 몇 개의 코딩테스트를 보았다. 사실 떨어진 것이 더 많아서 잠깐 멘탈이 부서졌지만, 코딩테스트는 어차피 계속하게 될 것이므로 (마음은 쓰라리지만) 이번에 느낀 것들, 부족한 것들을 정리해보고 발판삼아 나아가야겠다.

KakaoTalk_Photo_2019-09-29-22-00-58 자바벼락치기실패

기업별 코딩테스트 문제 느낌

코딩테스트도 플랫폼이 여러 곳이 있고, 같은 플랫폼이라고 해도 기업마다 문제를 내는 방식이 달랐다. 대표적으로 프로그래머스, 코딜리티, 구름과 같은 사이트들이 있다. 그 중 프로그래머스에서 테스트를 본 기업이 가장 많았는데, 놀랍게도 각 기업들마다 문제스타일과 테스트스타일이 다 달랐다.(그냥 다 달랐다. 엉엉) 보통 프로그래머스 테스트문제와 다르게 표준 입출력을 사용하는 경우도 있었고, 테스트케이스 1-2개를 제외하고 나머지 테스트들의 실행결과는 비공개인 기업도 있었다. 프로그래머스의 연습문제들의 경우 테스트케이스들이 주어지고, ‘채점’을 누르면 전체 케이스 중 본인이 몇 개의 경우를 pass했는지, fail했는지 알 수 있는데 프로그래머스의 플랫폼을 이용하더라고 이걸 비공개로 해서 문제를 내는 기업도 있었다… 코딜리티가 그렇게 되어있다. 최종 제출을 누르면 그냥 끝인거다… 본인이 timeout이 나지 않도록/모든 테스트 케이스를 만족하도록 최대한 제출 전에 생각한 후에 제출해야했다. 이런 연습 용으로는 코딜리티 사이트가 좋은 것 같다.


카카오

1차는 4시간에 7문제인가 그랬다. (1차리뷰는 여기에)문닫고 합격해서 2차 offline 테스트까지 보게 되었다. 2차는 카카오에서 만든 API를 통해서 호출 -> 알고리즘 구현 -> API로 POST를 해서 작동시키는 문제이다. 단순 알고리즘이라기 보다는 실제 구현 능력까지 배양하고 있어야 했었던 것 같다. 나는 API를 콜한 이후에 _데이터를 가공하는 부분_에서 애를 먹어서 효율적인 알고리즘을 구현하는 부분에 도달하지조차 못했다. 데이터를 가공하는 부분이라 함은, json 데이터를 받은 이후에 이걸 어떻게 잘 파싱한다음에 어떤 객체로, dictionary였다면 key, value는 무엇으로 해야할지 등등. 이런 부분에 대해서 구현능력이 부족했다. 아쉬웠지만, 내 실력을 그 누구도 아닌 스스로 검증하고 온 기분이었다.

라인

프로그래머스 플랫폼이었는데, 표준 입출력 방식이었고 테스트케이스를 공개하지 않았다. 2시간 6문제 였는데, 5문제는 풀었고 마지막 한 문제를 남기고 시간이 좀 남았으나 마지막 문제는 감이 딱 떠오르지 않아 1-5번까지 문제를 한 번씩 더 점검해보는데에 시간을 더 썼다. 30분정도를 남기고 6번문제는 대충 깔짝거린 코드만 제출하였다. 사실 1~5번까지는 여유있게 다 풀었었는데 탈락했다. 다른 기준이 있었다기에는 서류제출조차 없었기 때문에 코딩테스트에서 떨어진 것 밖에 없는데 역시 푼 것과 맞은 것은 다른가보다. 프로그래머스같이 테스트케이스의 점수가 공개되는 플랫폼에 익숙해서 좀 더 바르게 구현하는 부분이 부족했나보다. 이 부분은 백준, codility, hackerank, leetcode 등 다른 여러 코딩테스트 플랫폼에서 채워야 겠다.

네이버

역시 프로그래머스 플랫폼이었다. 표준 입출력 방식은 아니고 메소드로 변수를 받아오면 되는 방식이었는데, 역시 테스트케이스를 공개하지 않는 형식이었다. 2시간 3문제였다. 1번은 간단한 케이스 문제, 2번은 수리 연산문제, 3번은 그래프 문제였다. 생각보다 2번 문제에서 마지막까지 고민을 많이 했다. 2번 문제는 마냥 자료구조/알고리즘 이라기 보다는 좀 더 수리적 사고를 요구하는 느낌이었다. 다 풀긴 풀었다. 결과는 나오지 않았는데, 지금까지 떨어진게 많아서 사실 두렵다.

이스트소프트

코딜리티 플랫폼이었다. 역시 테스트케이스는 공개되지 않았다. 3시간 3문제였고, 내가 가능한 시간에 그냥 보면 됬었다. 퇴근 후 피곤한 몸을 이끌고 꾸역 꾸역 보았다. 3번 문제가 Tree에서 DFS를 응용한 backtracing이라고 해야하나.. 노드를 기억하는 부분은 DFS로 구현하겠는데, 내가 왔던 모든 길들을 저장하는 부분을 구현하지 못했다. 결과는 탈락. 이 때 3개 탈락메일을 받아면서 멘탈이 약간 무너졌다.

프로그래머스 웹개발자 온라인 박람회

프로그래머스에서 주요 스타트업 웹개발자를 매칭해주는 채용박람회였다. 프로그래머스에서 한 번의 코딩테스트로 5개의 기업에 서류제출이 가능하다. 익숙한 플랫폼에 익숙한 문제스타일이어서 그런지 3문제 모두 패스했다. 첫 번째 문제는 잘 기억이 안나고.. 두 번째 문제는 빙고게임같이 set을 이용해서 가능한 좌표 계산하는 문제, 세 번째 문제는 DP문제였다. 함수를 이용해서 재귀호출을 하니까 timeout이 나서 그냥 loop를 이용해 구현했다. 연습이 부족했다면 이 문제가 DP문제라는 것을 직감하는 데 까지 시간이 걸렸을 것 같다.
코딩테스트는 잘 봤는데, 내가 신입개발자로 지원을 한 게 아니라 경력개발자로 지원이 된 것 같다. 경력개발자의 레벨은 아닌 것 같아 신입으로 지원하고 과제테스트를 받고싶었는데.. 어쩔 수 없게 되었다..

NHN

처음으로 중도포기한 시험이다. 그냥 모든 시험이라는 것에서 왠만해서 포기라는 것을 하지는 않는데, 2시간에 4문제였는데 40분정도 코딩하다가 포기했다. NHN은 다른 기업들과 달리 코딩테스트 언어로 C, C++, Java만 지원했다. 채용설명회에 가서 들은 청천벽력 같은 소리였는데, 지푸라기라도 잡는 심정으로 바로 전날 기억을 더듬어 그동안 python으로 풀었던 문제들을 Java로 푸는 연습을 했었는데, 이걸론 택도 없었던 것 같다. 첫 번째 문제를 보고 파이썬으로 풀면 15분이면 풀었을 것 같은 문제를 시험시간의 5/2가 지나가도록 잡고있는것을 나 자신을 보고 포기하게 되었다. 꾸역꾸역 봐보려고 했는데, Java를 제대로 사용해본 적도 많이 없고 함수/오브젝트/클래스의 개념도 혼돈스러운데다가 파이썬에서는 신경쓸 필요가 거의 없었던 변수 자료형에 대해서 신경쓰며 코딩하려니 잘 모르는 객체 옆에 모르는 객체 옆에 모르는 객체들이 한가득이었다. 어거지로라도 푸는 것은 실패하였고, 내년에도 만약 코딩테스트를 준비하게 된다면 Java로 풀어보는 것도 연습해야겠다. 특히 풀면서 그냥 자바공부를 해야겠다.


멘탈정리

한 달정도 거의 매주 주말 코딩테스트가 있었고, 퇴근 후에 집으로 가지도 못하고 별마당 도서관에서 노트북을 두둘기고 있다보니 꽤나 지쳐있었나보다. 오늘 NHN 코테를 보다가 노트북을 덮는 내 자신을 보며 느꼈다. 아무것도 안하고 쉬다가 수영한번 하고 오니 그래도 좀 정신이 정리된 것 같다. 어느덧 남은 카드가 별로 없다.(하하) 남은 기간은 회사일 하고 그 외 시간에는 부족한 기초 채우고 안되면 뭐 다음에 또 도전하면 되는거니.. 일단 부족한 기초를 채우는데에 집중하자.