스파르타코딩 클럽의 1시간 만에 정복하는 코딩테스트 합격법의 최지웅 선생님의 강의를 듣고 작성하였습니다.

코딩테스트 란?

취업을 위한 필수 관문으로 기술역량, 문제해결능력, 코드 구현 능력을 파악하기 위한 테스트이다.
최근 채용 공고를 확인해 본 결과
1. 서류 심사 > 코딩테스트
2. 코딩 테스트 > 서류 심사
의 과정을 거쳐 채용을 하고 있으며 좋은 회사를 가기 위해선 코딩테스트를 꼭 준비해야한다.
그럼 코딩 테스트는 왜 보는가 ??
기술 역량 : 프로그래밍 문법, 알고리즘, 자료구조 등 평가
문제 해결 능력 : 주어진 제시문을 이해, 문제 분석, 해결책을 찾기
코드 구현 능력 : 코드 구현 파악, 스타일 가이드, 주석 등 코드를 통한 협업 파악
코딩 테스트를 진행하기 위해선 2가지의 방법으로 진행합니다.
온라인 | 오프라인 |
플랫폼을 통해 시험 응시 | 회사에 방문하여 시험 응시 |
( 대체로 ) 인터넷 검색 허용 | ( 대체로 ) 인터넷 검색 비허용 |
자신의 개발 환경에서 진행 | 회사에서 제공하는 환경에서 진행 |
현재까지 진행했던 6개의 코딩테스트는 모두 온라인에서 진행했었다. 진행 방법으로는 2가지 경우가 있었습니다.
* 인터넷 검색 비허용
1. 제약 조건 없이 시간 내에 코딩 테스트 진행 후 제출
2. 웹캠, 사이드 캠, 브라우저 실시간 화면 공유 후 코딩 테스트 진행 후 제출
📃 기술 역량
먼저 코딩테스트를 준비하기 위해 지원하고 싶은 회사의 출제 문제를 파악을 하고 공부를 해야했었습니다.
코딩테스트 공부하기 위한 문제 유형으로 아래와 같이 있었습니다. ( 스파르타코딩클럽 자료 참조 )
자료구조 | 알고리즘 |
ArrayList, Linked List, Stack, Queue, Dequeue, Priority queue, Hash Table, Graph, Tree, Heap |
Simulation/Implementation, Search, Sort, Greedy, Kruscal, Dynamic Programming, Dijkstra, Floyed - Warshall, Primm |
이 중 코딩테스트 경험 결과 이차원 배열을 사용하거나 Simulation/Implementation, Sort, Dynamic Programming, DFS, BFS의 알고리즘 자주 나오는 문제였습니다.
📃 문제 해결 능력
1. 문제 해결 주어진 제시문을 이해
2. 문제 분석하여 해결책을 찾는 능력
등을 평가하는 내용으로 코딩테스트를 진행하면서 내가 왜 이렇게 문제를 해결해나갔는지 논리적으로 설명 하는 것이 매우 중요했습니다.
코딩 테스트 연습 중 풀다가 막히는 경우는 어떻게 해야하는 것일까?
학원을 다닐 때에도 선생님께 많이 들은 이야기 인데 처음 테스트를 진행할 때는 많은 문제를 보고 풀어보는게 좋다고 했습니다.
1. 시간을 정해두고 문제를 풀어본다. ( 오랜 시간 붙잡는다고 해서 좋은 방법은 아니다 )
2. 못 푼 문제를 답안을 찾아본다 ( but, 보기만 한 경우 잊어버릴 수 있어 문제를 직접 풀어보아야합니다. )
마치 고등학교 때 수학 공부를 했을 때와 유사합니다.
📃 코드 구현 능력
코드 작성 스타일이나 구현 능력 파악하는 단계이다.
좋은 코드를 작성하기 위해선 단계를 정해두고 공부하는 것이 좋습니다.
1. 기본 문법 학습 ( 대표적으로 C, C++, JAVA, Python 사용 )
- 이중 제공되는 라이브러리가 Python이 더 좋아 코딩테스트는 Python으로 많이 준비한다고 하였습니다
2. 기초 알고리즘 문제풀이
3. 기출 문제 풀이
📃 주의 사항
1. 숨어 있는 테스트 케이스 조심
아래의 이미지와 같이 보통 입출력의 예시로 2 ~ 4개를 보여주지만 해당 테스트 케이스 말고 많은 케이스가 있으며 모두 통과되도록 풀어야한다. 만약 최종 제출 시 통과가 안될 경우 예외 상황이 있는지 다시 한번 살펴 보아야한다.

2. 타임 아웃을 조심
테스트를 제출하다보면 결과 값은 맞게 나오더라도 타임 아웃이 발생하는 경우가 있다. 특히 파이썬의 경우 C++, JAVA 보다 실행 속도가 느리기 때문에 동일한 알고리즘임에도 풀리지 않는 경우가 발생합니다. 파이썬의 경우 최적의 알고리즘을 작성하는 것이 중요합니다.
이외에도 반복문 줄이기, 백트래킹 알고리즘(한 번 계산한 값 기억하기)을 통해 테스트 타임을 줄이는 것이 중요합니다.
3, 시간 내에 최종 제출하자..
코딩테스트의 경험으로 바보같이 코드 실행만 하고 최종 제출을 안한걸 다 끝난 뒤 알게되어 허무한 경험을 한 적이 있다..
아래와 같이 코드 실행 / 제출 후 채점하기 두 항목이 있는데 꼭 제출 후 채점하기를 꼭 누르고 확인해야합니다..

앞서 이야기한 3가지의 역량을 키우기 위해선 꾸준히 많이 풀어보는 것이 중요합니다.
💻 코딩 테스트 사이트
회사 코딩 테스트 진행 해본 결과로는 프로그래머스와 구름을 많이 사용하였습니다.
Leetcode : 스파르타 코딩클럽에서 추천해 준 사이트 / Git Hub와 연결하여 관리하는 것이 좋아보았습니다.
프로그래머스 : 국내 기업에서 많이 사용하고 따로 입출력 코드를 사용하지 않아 시간을 절약 할 수 있었습니다.
백준 : 카테고리의 정말 많은 문제가 존재, 개인 공부로는 좋은 사이트입니다.
앞의 사이트 이외에도 많은 준비하는 사이트가 있습니다.
본인이 편한 사이트에서 코딩 준비를 한 뒤 나만의 알고리즘 노트를 만드는 것이 좋은것 같습니다.
6번의 코딩테스트와 강탈로 준비를 잘못하고 있구나라고 생각하여 들은 1시간 무료 강의로 좋은 공부 방법을 배우고 정리하게 되었습니다. 물론 1시간의 짧은 강의를 직접 듣는 것이 좋다고 생각합니다 !