Ch.12 모의 면접 & 종합 전략
문제 분류법 — 패턴 인식 프레임워크
문제를 읽자마자 풀이가 떠오른다면?
수백 개의 문제를 풀어본 사람은 문제를 보자마자 패턴을 인식합니다. 하지만 이것은 재능이 아니라 분류 능력입니다.
1000문제를 풀어도 새 문제 앞에서 막히는 이유는 뭘까?
핵심은 패턴 분류 프레임워크입니다. 키워드→패턴→자료구조 매핑을 익히면 됩니다.
핵심 개념
패턴 인식
문제의 키워드와 구조에서 적합한 알고리즘을 매칭하는 능력
키워드 매핑
특정 단어가 나오면 특정 자료구조/알고리즘을 떠올리는 연결
핵심 내용
면접 고수의 비밀은 패턴 라이브러리입니다
1000문제를 풀어도 패턴을 정리 안 하면 새 문제마다 처음부터 고민합니다
반면 15개 핵심 패턴만 익히면 면접 문제의 90%를 커버합니다
문제에서 이 키워드가 보이면 해당 패턴을 떠올리세요
배열 + 중복/빈도 → HashMap / Counter 정렬된 배열 + 탐색 → 이진 탐색 연속 부분 배열 → 슬라이딩 윈도우 두 수의 합 → Two Pointer / HashMap 트리 탐색 → DFS / BFS 그래프 연결 → Union-Find / BFS
이 매핑을 암기하면 문제를 읽는 1분 안에 방향이 정해집니다
더 많은 키워드를 패턴과 연결해봅시다
최단 경로 → Dijkstra / BFS 최소/최대 조합 → DP (동적 프로그래밍) 모든 경우의 수 → 백트래킹 Top K, 중앙값 → 힙 (Heap) 문자열 접두사 → 트라이 (Trie) 구간 합/업데이트 → 세그먼트 트리 / 펜윅 트리
이 복잡도 치트시트를 면접 전에 한 번 훑으면 자신감이 달라집니다
실제 면접 문제로 패턴 매핑을 연습합시다
# 문제: "정렬된 배열에서 target의 위치를 찾아라"
# 키워드: 정렬된 배열 + 탐색 → 이진 탐색!
def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1# 문제: "배열에서 합이 target인 두 수의 인덱스를 찾아라"
# 키워드: 두 수의 합 → HashMap!
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []키워드만 잡으면 풀이 방향이 자동으로 결정됩니다
어려운 문제는 두 가지 패턴이 결합된 경우가 많습니다
패턴 결합 예시: • 그래프 + BFS → Number of Islands • DP + 그래프 → 최소 비용 경로 • 해시맵 + 연결리스트 → LRU Cache • 트라이 + DFS → Word Search II
Hard 문제 = Easy 패턴 2개의 결합이라고 생각하면 훨씬 쉬워집니다
'연속 부분 배열의 최대 합'을 구하라는 문제에 가장 적합한 패턴은?
Hard 문제는 기존 패턴으로는 풀 수 없는 완전히 새로운 유형이다
패턴 인식 마스터!
핵심 용어
패턴 인식
문제 키워드→알고리즘 매칭 능력
키워드 매핑
특정 단어→특정 자료구조 연결
정리 노트
문제 분류법 — 패턴 인식
키워드→패턴 매핑
- 중복/빈도
- HashMap / Counter
- 정렬+탐색
- 이진 탐색
- 연속 부분 배열
- 슬라이딩 윈도우
- 트리 탐색
- DFS / BFS
- 최소/최대 조합
- DP
- Top K
- Heap
핵심 전략
- Hard 문제
- Easy 패턴 2개의 결합
- 패턴 라이브러리
- 15개만 익히면 90% 커버
이 패턴 테이블을 면접 대기실에서 한 번 훑으세요!
시각 자료
핵심 정리
- 1키워드→패턴 매핑으로 즉시 방향 결정
- 215개 핵심 패턴이 면접 90% 커버
- 3Hard = Easy 패턴 2개의 결합
- 4패턴 분류 프레임워크로 체계적 접근
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작