기타/코딩테스트
(코테) 백준_유형별 풀이 파악하는 팁
불광동 물주먹
2025. 5. 24. 19:26
✅ 실전에서 문제 유형을 빠르게 분류하는 핵심 질문 5단계
🧠 문제를 받았을 때 바로 자문
1. ❓최단 거리, 최소 이동 횟수 찾는 문제인가?
- 예시 문장: "가장 빠른", "가장 적은 이동", "몇 초 후에 도착"
- ✅ BFS (Queue) 사용
- ✳️ 변형되면 → 다익스트라 (가중치 그래프), 0-1 BFS
2. ❓모든 경우의 수를 구하거나 찾는 문제인가?
- 예시 문장: "모든 조합", "모든 순열", "모든 방법"
- ✅ 백트래킹 / DFS / 완전탐색
- ✳️ 조건이 없다면 → 완전탐색
- ✳️ 조건이 있으면 → 백트래킹
3. ❓이전에 계산한 결과를 재활용할 수 있는가? (부분 문제 중복)
- 예시 문장: "최대 점수", "최소 비용", "몇 가지 방법", "이전 값 기반"
- ✅ DP (Dynamic Programming)
- ✳️ 점화식 도출 가능 여부가 핵심
4. ❓수나 배열을 정렬한 뒤 조건을 만족하는 쌍/구간을 찾는가?
- 예시 문장: "두 수의 합", "구간합", "연속된 부분"
- ✅ 투 포인터 / 이분 탐색 / 누적합 / 슬라이딩 윈도우
5. ❓"연결되어 있다", "같은 그룹", "사이클" 같은 단어가 나오는가?
- ✅ 그래프 탐색 (DFS/BFS), 유니온 파인드, MST, 위상 정렬
- ✳️ 방향 그래프 + 순서 = 위상 정렬
- ✳️ 가중치 + 연결 최소 = 크루스칼/프림
✅ 입력 조건으로 파악하는 팁
입력 크기 | 추천 알고리즘 |
N ≤ 10 | 완전탐색, 백트래킹 (2ⁿ 가능) |
N ≤ 100 | 2차원 DP, Floyd |
N ≤ 1000 | O(N²) 알고리즘 가능 |
N ≤ 100,000 | O(N log N) (정렬, 투포인터, 이분탐색) |
N ≤ 1,000,000 | O(N) 알고리즘만 가능 |
✅ 예시로 감 잡기
예1:
"수빈이는 걷거나 순간이동해서 동생을 찾아야 한다. 가장 빠르게 찾아갈 수 있는 시간은?"
✔️ "가장 빠르게" → 최단 거리
✅ BFS
예2:
"1부터 N까지 중복 없이 M개를 고르는 모든 순열을 구하시오."
✔️ "모든 순열" → 모든 경우 탐색
✅ 백트래킹 + 방문 배열
예3:
"배열에서 연속된 수들의 합이 S 이상이 되는 가장 짧은 길이의 부분 수열"
✔️ "연속된", "가장 짧은", "합이 조건 만족"
✅ 투 포인터 / 슬라이딩 윈도우
예4:
"가장 긴 증가하는 부분 수열의 길이를 구하라"
✔️ 수열, 길이, 최적해
✅ DP
✳️ 최적화하면 → 이분탐색 + LIS
예5:
"도시가 N개 있고 도로가 M개 있다. 모든 도시를 연결하는 최소 비용을 구하시오."
✔️ 그래프 + 최소 연결 비용
✅ MST (크루스칼 or 프림)
✅ 정리 요약표
조건/표현 | 판단 알고리즘 |
가장 빠른 / 최소 시간 | BFS |
모든 방법 / 경우의 수 | 백트래킹, 완전탐색 |
누적 / 최댓값 / 점화식 | DP |
정렬 후 구간 탐색 | 투 포인터, 슬라이딩 윈도우 |
연결 여부 / 사이클 | DFS, 유니온 파인드, MST |
"가능한가?" / 최적 조건 | 이분 탐색 (YES/NO 판단) |
문자열 검색 | KMP, Z, Trie |