코딩 테스트
1. 개요
코딩 테스트는 알고리즘 문제를 푸는 시험을 말한다. 코테라고 줄여서 부르기도 한다. 시험 응시자들은 해당 문제를 해결하는 컴퓨터 프로그램을 작성하고, 소스 코드를 온라인 판정(Online Judge) 프로그램에게 제출해야 한다. 온라인 저지 프로그램은 미리 준비되어 있는 테스트 케이스들을 자동화된 방식으로 채점한다. 카카오, NHN, 삼성전자 등의 주요 IT 관련 기업들이 프로그래머를 채용하기 위한 시험 방식의 하나로 활용하고 있다.
2. 온라인 저지
코딩 테스트를 준비하고 연습하기 위한 온라인 저지 서비스를 제공하는 사이트들이 많이 있다.
2.1. 국내
백준 온라인저지: Baekjoon OJ
알고스팟
프로그래머스
SW Expert Academy
2.2. 해외
Codeforces: 코드포스
TopCoder: 탑코더
LeetCode: 리트코드
3. 출제 유형
3.1. 프로그래머스의 분류
프로그래머스 사이트의 코딩테스트 고득점 Kit[1] 를 보면 코딩 테스트에 나오는 문제 유형을 이렇게 분류해 놓았다.
- 해시
- 스택/큐
- 힙(Heap)
- 정렬
- 완전 탐색
- 탐욕법 (Greedy)
- 동적계획법 (Dynamic Programming)
- 깊이 우선 탐색 / 넓이 우선 탐색 (DFS/BFS)
- 이진 탐색
- 그래프
3.2. 백준의 분류
백준 온라인 저지 사이트의 알고리즘 분류도 참고할 만 하다. 백준 온라인의[2] 에서 알고리즘 분류의 항목만 뽑아보면 다음과 같다.
- 수학
- 문자열
- 재귀
- 브루트 포스
- 정렬
- 백트래킹
- 동적 계획법
- 그리디 알고리즘
- 스택
- 큐와 덱
- 분할 정복법
- 이진 탐색
- 우선순위 큐
- DFS와 BFS
- 최단 경로: 다익스트라 알고리즘, 플로이드-워셜 알고리즘
- 투 포인터
- 트리
- 유니온 파인드
- 최소 신장 트리
- 위상 정렬
- 세그먼트 트리
- 이분 매칭
- 네트워크 플로우
3.3. SW Expert Academy의 분류
SW 엑스퍼트 아카데미 사이트에서는 Reference Code[3] 를 제공하는데, 이 레퍼런스 코드의 분류를 보면 다음과 같다.
- 스택
- 재귀
- 큐
- 우선순위 큐
- 해시
- 트리
- 그래프
- 연결 리스트
- 삽입 정렬
- 퀵 정렬
- 카운팅 정렬
- 이진 탐색
- DFS 탐색
- BFS 탐색
- 파라미터 탐색
- 동적 계획법
- 순열과 조합
- 다익스트라 알고리즘
4. 코딩 테스트를 실시하는 기업
4.1. 국내
카카오
네이버
라인
삼성그룹: 삼성 SW 역량 테스트
4.2. 해외
Google: 구글
Facebook: 페이스북
Netflix: 넷플릭스
5. 코딩 테스트 공부를 위한 책
코딩 테스트를 공부하기 위해서는 먼저 자료구조와 알고리즘과 같은 컴퓨터 과학의 기초 과목들을 열심히 공부해야 한다. 하지만 정해진 시간 내에 주어진 문제들을 오류없이 해결해야 하므로, 어느 정도 문제 풀이 훈련을 해야만 한다는 것이 정설이다.
코딩 테스트 공부에는 기존의 국제정보올림피아드, 한국정보올림피아드 등의 프로그래밍 경진대회 준비를 위한 책들도 분명히 도움이 된다.
- 알고리즘 문제 해결 전략 세트. 구종만. 인사이트. 2012년 11월
- 파이썬 알고리즘 인터뷰. 박상길. 책만. 2020년 7월.
- 이것이 취업을 위한 코딩 인터뷰다 with 파이썬. 나동빈. 한빛미디어. 2020년 8월