Notice
Recent Posts
Recent Comments
Link
Gom3rye
투 포인터가 가능한 문제 판별법 (체크리스트) 본문
728x90
반응형
아래 조건 중 3개 이상 맞으면 거의 확정
1️⃣ “연속한 구간(부분 수열)”이라는 말이 있는가?
투 포인터의 절대적 전제 조건
✔ 연속한
✔ 부분 수열
✔ subarray
✔ 구간 [L, R]
❌ 순열, 조합, 임의 선택 → 투 포인터 아님
2️⃣ 구간에 대한 “조건”이 단조적인가?
🔑 단조성(monotonicity)이 핵심
오른쪽을 늘리면 조건이 점점 나빠지거나 / 좋아지거나
예시
| 조건 | 단조성 |
| 합 ≤ K | right ↑ → 합 ↑ |
| 중복 없음 | right ↑ → 중복 가능성 ↑ |
| 서로 다른 수 개수 ≤ K | right ↑ → 개수 ↑ |
| 최대 − 최소 ≤ K | right ↑ → 차이 ↑ |
👉 조건이 깨지면 left를 움직여 회복 가능
3️⃣ “최대 / 최소 / 개수”를 묻는가?
투 포인터의 전형적인 질문들:
✔ 가능한 최대 길이
✔ 가능한 최소 길이
✔ 조건을 만족하는 구간의 개수
이 중 하나면 의심 1단계 통과
4️⃣ N이 크다 (보통 ≥ 10⁵)
이건 거의 신호등 🚦
| N가능 | 알고리즘 |
| 10³ | O(N²) |
| 10⁵ | O(N) or O(N log N) |
| 10⁶ | 거의 O(N) |
👉 연속 + 조건 + N 큼 → 투 포인터 거의 확정
5️⃣ “하나씩 늘려보면 된다”는 느낌이 드는가?
문제를 읽을 때 이런 생각이 들면 바로 투 포인터:
- “오른쪽을 늘리다가 안 되면 왼쪽 줄이면 되겠네”
- “중복 나오면 앞(left)에서 빼면 되겠네”
- “합이 넘치면 앞(left)에서 줄이면 되겠네”
👉 이 생각 자체가 투 포인터 사고방식
❌ 투 포인터가 절대 안 되는 경우
🚫 1. 연속이 아니다
수열에서 K개를 골라서
❌ 투 포인터 불가
🚫 2. 조건이 비단조적
합이 정확히 K
합은:
- 늘리면 커졌다가
- 줄이면 작아졌다가
- 다시 늘리면 또 커짐
👉 슬라이딩 윈도우 불가
(단, 양수만 있을 때는 예외적으로 가능)
🚫 3. 뒤에서 상태가 바뀌는 문제
나중 선택이 앞의 상태를 바꾼다
👉 DP / 그리디 / 스택 문제
🔍 대표 문제 유형 매핑
| 문제 설명 | 알고리즘 |
| 중복 없는 연속 부분 수열 개수 | 투 포인터 |
| 합이 K 이하인 최대 길이 | 투 포인터 |
| 서로 다른 수 ≤ K | 투 포인터 |
| 최소 길이 부분 수열 | 투 포인터 |
| 스카이라인 / 히스토그램 | ❌ 스택 |
| 스위치 / 토글 | ❌ 그리디 |
| 모든 경우의 수 | ❌ DP |
🧠 빠른 판별 3문장 법칙
문제 보자마자 스스로에게 물어볼 질문
1️⃣ 연속인가?
2️⃣ 오른쪽 늘리면 조건이 단조적으로 변하나?
3️⃣ 안 되면 왼쪽 줄이면 회복되나?
👉 전부 YES → 투 포인터
📌 한 줄 요약
연속 + 조건 단조 + N 큼
👉 투 포인터
728x90
반응형
'코딩테스트 준비' 카테고리의 다른 글
| DP vs. Stack vs. Heapq (0) | 2026.01.02 |
|---|---|
| stack vs. heapq 문제 차이 비교 (0) | 2025.12.17 |
| Union-Find를 쓸 수 있는 문제 유형 5가지 (0) | 2025.12.09 |
| 투 포인터를 쓸 수 있는 문제 유형 10가지 (0) | 2025.12.08 |
