코딩테스트를 포트폴리오보다 먼저 준비해야 하는 이유는, 코딩테스트는 단기간에 준비할 수 없기 때문입니다. 마음만 먹으면 단기간에도 완성할 수 있는 포트폴리오와 달리, 코딩테스트를 위한 '문제 해결력'을 기르기 위해서는 최소 한두 달 꾸준히 훈련해야 하죠. 다른 교과과목은 벼락치기가 가능하지만 영어, 수학은 평소에 공부해야 하는 이유와 비슷한데요. 개발자 커리어를 준비하고 싶다면, 본격적인 채용 시즌이 되기 전에 코딩테스트를 꾸준히 공부해서 '코딩 근육'을 키워보세요.
코딩테스트에서는 자료구조 및 알고리즘 개념을 활용해 문제를 해결하는 것이 중요합니다. 따라서 자주 활용되는 이론을 제대로 이해하고 있어야 하죠. 코딩테스트 합격에 필요한 주요 자료구조 및 알고리즘 개념을 정리해 드리겠습니다.
시간복잡도
코딩테스트에서는 최대한 효율적인 알고리즘을 선정해 문제를 해결해야 합니다. 알고리즘이 실행되는 시간이 짧을수록 좋은 답안이라고 할 수 있죠. 따라서 입력 크기를 고려해 알고리즘의 시간복잡도를 계산하는 연습은 필수입니다.
자료구조
Stack, Queue, Hashmap, Graph, Tree 등 주요 자료구조 개념을 확실하게 이해하고 넘어가야 알고리즘을 자유자재로 다룰 수 있습니다. 각 자료구조를 직접 코드로 구현해 보며 원리를 탄탄하게 익히고, 주어진 문제에 적합한 자료구조를 선택하는 연습을 해보세요.
알고리즘
알고리즘에서는 DFS, BFS, Dynamic Programming, Brute Force, Back Tracking 등의 개념이 중요합니다. 특히 재귀와 완전 탐색, 문자열을 다루는 연습을 많이 해보면 좋습니다.
코딩테스트에서 어떤 언어를 선택하는 게 좋을지 고민하시는 분들이 많은데요. 기본적으로는 지원하는 회사가 어떤 언어로 코딩테스트를 보는지 확인해야 합니다. 그리고 그중에서 가장 자신 있고 능숙한 언어를 선택하는 게 좋습니다.
하지만 자신이 특출 나게 잘 다루는 언어가 아직 없거나 코딩 경험이 상대적으로 적다면, 가장 대중적인 파이썬을 추천해 드려요. 가장 큰 장점은 다양한 라이브러리를 활용해 코드를 간결하게 구현할 수 있다는 점입니다. 따라서 문제 풀이 시간이 제한되어 있는 코딩테스트에 매우 적합한 언어이죠. 또한 파이썬은 문법이 직관적이고 쉽기 때문에 입문자도 금방 익힐 수 있습니다.
이론을 탄탄히 다지고 코딩테스트 언어도 선택했다면, 실전 문제를 많이 풀어보며 이론을 적용하는 연습을 해야 합니다. 매일매일 제한 시간을 정해서 코딩테스트 문제를 꾸준히 풀고 시간 배분 전략도 미리 연습해 보세요. 만약 정해진 시간 내에 문제를 다 풀지 못했다면, 계속 해당 문제에 매달리기보다는 답을 보며 이해하고 넘어가는 것도 괜찮습니다. 아래 코딩테스트 공부에 도움이 되는 사이트 3곳을 참고해 실전 감각을 길러보세요.
백준 온라인 저지
국내에서 가장 대표적인 알고리즘 연습 사이트입니다. 약 2만 개의 문제가 등록되어 있어 비슷한 유형의 문제를 많이 풀어볼 수 있습니다. 난이도, 출처, 알고리즘 종류 등 여러 기준으로 문제가 분류되어 있고, 대중적인 사이트인 만큼 커뮤니티가 활성화되어 있어 다른 사람과 도움을 주고받기에 좋습니다.
삼성SW Expert Academy
삼성에서 운영하는 코딩 학습플랫폼으로, 삼성에 지원할 생각이 있다면 필수적으로 공부해야 하는 사이트입니다. 난이도별 다양한 문제가 주기적으로 업로드되고, 프로그래밍 관련 학습 콘텐츠도 제공되는데요. 상시 SW 역량테스트에 응시해 좋은 성적을 받으면 삼성 SW개발 직무 신입채용 지원 시 우대해 주기도 합니다.
리트코드(LeetCode)
세계적으로 유명한 미국의 알고리즘 사이트입니다. 문제 퀄리티가 상당히 높고, 다른 사람의 풀이도 상세하게 볼 수 있는데요. 문제 풀이에 대한 실행 속도도 측정할 수 있어 효율적인 알고리즘 짜는 걸 연습할 때 매우 유용합니다.