코드 한 줄의 기록

면접 합격을 부르는 코딩 테스트 문제 유형과 준비 비법 본문

코딩테스트

면접 합격을 부르는 코딩 테스트 문제 유형과 준비 비법

CodeByJin 2025. 9. 5. 07:18
반응형

코딩 테스트는 개발자 면접의 관문이자, 실력을 단번에 보여줄 수 있는 기회입니다. 꾸준히 출제되는 핵심 유형 7가지와, 제가 직접 경험하며 정리한 효율적 학습법을 알려드립니다. 이 글을 통해 막막했던 알고리즘 준비가 한결 명확해지고, 합격의 감격을 나눌 수 있길 바랍니다.

해시(Hash) & 맵(Map) 활용 문제  

첫 회사 코딩 테스트 때, 전화번호 중복 검사를 ‘Map’ 없이 이중 for문으로 돌려 시간 초과를 받은 기억이 납니다. 이후 해시맵으로 조회 상수를 경험하며 진가를 느꼈죠.

유형 설명
- 중복 체크, 카운팅: 배열이나 문자열에서 빈도 세기  
- 투명도 검사: 아나그램(anagram) 판별, 부분 배열 합 비교 등

준비 과정
1. 기본 문법 복습: JavaScript의 `Map`, Python의 `dict`, Java의 `HashMap` 사용법 마스터  
2. 빈도 테이블 문제 풀이: LeetCode “Two Sum,” “Valid Anagram” 반복  
3. 시간 복잡도 자가 진단: O(n²) 풀이와 O(n) 풀이를 직접 작성해 비교  

풀이 팁
- “Two Sum”은 키-값 저장 전에 complement(타깃-현재값)를 먼저 검사  
- 문자열 아나그램: 두 배열의 카운트 배열(크기 26) 활용  

슬라이딩 윈도우 & 투 포인터

“연속된 부분 합 최대값” 질문에 윈도우 크기를 하드코딩했다가 실패. 이후 공부하며 포인터 두 개만으로 문제 해결하는 쾌감에 빠졌습니다.

유형 설명
- 연속 부분합/최대값: 고정 길이 혹은 가변 길이 윈도우  
- 쌍 찾기: 정렬된 배열에서 투 포인터로 합이나 차 검사

준비 과정
1. 핵심 개념 이해: “윈도우의 시작과 끝” 포인터 움직임 규칙 정리  
2. 예제 반복 풀이: “Subarray Sum Equals K”, “Container With Most Water”  
3. 시뮬레이션 다이어그램 작성: 포인터 이동을 종이에 그림으로 그려보기  

풀이 팁
- 가변 윈도우: while 문 안에서 start 포인터 이동 시 조건 갱신 꼼꼼히  
- 투 포인터: 정렬 단계 필수, low/right 포인터 간 의존성 파악  

그리디(Greedy) 알고리즘  

채점 환경에서 탐욕법을 의심만 하다 시간 부족으로 포기. 단순하지만 보석 같은 규칙을 찾아내는 연습이 급선무였습니다.

유형 설명
- 활동 선택, 최소 비용: 회의실 배정, 동전 거스름  
- 최대 이익: 배낭 문제의 근사 해법

준비 과정
1. 탐욕 선택 속성 확인: 로컬 최적 → 글로벌 최적 검증  
2. 대표 문제 풀이: “Fractional Knapsack,” “Jump Game II”  
3. 수학적 직관 연습: 증명 없는 코드는 미완성! 그리디 성질 증명 간단히 노트에 정리  

풀이 팁
- 그리디가 통하지 않는 케이스(예: 0-1 배낭)와 비교하며 이해  
- 선택 조건 우선순위(정렬 키) 고민: 무게 대비 가치, 마감 시간 등  

DFS/BFS 그래프 탐색

친구와 칭찬 속에 재귀 깊이 초과 에러를 만난 날이 아직 잊히지 않습니다. 재귀/반복 번갈아 쓰며 스택 직접 다뤄보니 개념이 명확해졌습니다.

유형 설명
- 경로 찾기, 연결 요소: 미로 탐색, 섬의 개수  
- 최단 경로: 가중치 없는 그래프에서 최단 간선 탐색

준비 과정
1. 인접 리스트 vs 행렬: 메모리·속도 이점 비교  
2. 재귀/반복 코드: 스택 직접 사용해 비재귀 DFS 구현  
3. 대표 예제: “Number of Islands,” “Clone Graph”

풀이 팁
- 재귀 깊이 제한 대비: 언어별 `sys.setrecursionlimit`, 스택 활용  
- BFS 큐에서 방문 처리 시점(삽입 vs 꺼낼 때) 구분  

동적 계획법(DP)

DP는 “내가 왜 이걸 물려줄까” 하는 기분. 하지만 “피보나치”부터 “최장 증가 부분 수열”까지 차근차근 밟으니 퍼즐 완성의 쾌감이 컸습니다.

유형 설명
- 1차원 DP: 피보나치, 계단 오르기  
- 2차원 DP: 편집 거리, 최장 공통 부분 수열(LCS)

준비 과정
1. 부분 문제 정의: DP 테이블(dimensions)과 상태 전이 함수 구체화  
2. 종이로 손코딩: 작은 입력에 대해 DP 테이블 직접 채워보기  
3. 메모이제이션 vs 타뷸레이션: 두 방법 모두 구현 연습  

풀이 팁
- 상태 전이식은 “현재 결정 + 이전 최적값” 구조  
- 메모리 최적화: 2차원→1차원 압축 가능성 판단  

이진 탐색(Binary Search)

“정렬된 배열에서 특정 값 찾기”는 기본, “답의 범위 찾기” 문제에 고전. lower_bound/upper_bound 패턴을 외우고 나니 폭넓게 적용 가능해졌습니다.

유형 설명
- 기본 탐색: 값 유무 확인  
- 파라메트릭 서치: 최적화 문제(예: 최대 최소값)

준비 과정
1. 템플릿 암기: 좌표계(left=0,right=n) vs (left=0,right=n-1)  
2. 응용 문제: “Aggressive Cows,” “Capacity To Ship Packages”  
3. 경계 값 테스트: low, mid, high가 어떻게 변하는지 표로 정리  

풀이 팁
- 무한 루프 방지: mid 계산 시 `(left+right)//2` vs `left+(right-left)//2`  
- 조건에 따라 `right=mid` vs `right=mid-1` 구분

자료 구조 심화: 스택/큐/우선순위 큐

최단 경로에 우선순위 큐를 써야 한다는 것만 알고, `heapq` 사용법이 미숙해 시간 초과. 직접 팩토리얼 구현하듯 heap 삽입·삭제를 연습했습니다.

유형 설명
- 스택: 괄호 검사, 후위 표기식 계산  
- 큐: 바이러스 퍼짐 시뮬레이션  
- 우선순위 큐: 다익스트라, 스케줄링

준비 과정
1. 언어별 라이브러리: Python `deque`/`heapq`, Java `PriorityQueue`  
2. 직접 구현: 단순 배열→링크드 리스트 큐 구현해 보기  
3. 대표 문제: “Dijkstra’s Algorithm,” “Evaluate Reverse Polish Notation”

풀이 팁
- 연산 순서 주의: 큐 vs 덱 메서드 차이  
- 커스텀 비교 함수 활용법 숙지  

최종 점검 & 모의고사 활용법

매주 토요일마다 삼성·네이버·카카오 기출 모의고사를 풀었더니 긴장감이 훨씬 줄었습니다. 실제 시험과 유사한 환경에서 실전 감각을 기르는 것이 핵심이었습니다.

준비 과정
1. 데드라인 설정: D-30까지 모든 유형 1회 이상 완독  
2. 주간 모의고사: 온라인 저지 사이트에서 타임어택  
3. 오답 노트: 카테고리별 착오 유형 기록, 주기적 리뷰

마지막 마무리 팁
- 코드 리뷰: 스스로 작성한 코드를 3일 뒤에 다시 읽어보기  
- 페어 프로그래밍: 동료와 번갈아가며 실시간 리뷰 세션  
- 멘탈 관리: 적절한 휴식과 수면으로 집중력 유지

이 글을 따라 차근차근 준비한다면, 어느 회사 면접이든 자신 있는 코드와 체계적인 설명으로 면접관에게 깊은 인상을 남길 수 있을 것입니다. 준비 과정에서의 시행착오를 디딤돌 삼아, 곧 합격 소식을 띄워 보세요!

단기간에 코딩 테스트 정복하기: 실전 경험담으로 풀어가는 준비법과 꿀팁

코딩 테스트는 개발자로 가는 첫 관문이자 동시에 가장 두려운 시험 중 하나였다. 나도 처음엔 막막했고, 무수한 알고리즘과 자료구조를 마주하면서 좌절하기 일쑤였다. 하지만 꾸준한 연습과

byteandbit.tistory.com

반응형