사고 · intermediate

패턴 고르기: 제약으로 후보 줄이기

입력을 본 뒤 해시·투포인터·스택·DP 중 어디부터 볼지.

배우기 · 문제 푸는 사고 · 14분 · 5/10 · 전략

이 트랙 목차 (10)
  1. 1. 문제 읽기: 입출력·제약·목표
  2. 2. 예제 추적: 손으로 한 스텝
  3. 3. 경계·엣지 케이스 목록화
  4. 4. 오답·실패 케이스 분석
  5. 5. 패턴 고르기: 제약으로 후보 줄이기
  6. 6. 의사코드: 구현 전에 뼈대 쓰기
  7. 7. 시간 상자: 막힐 때 멈추는 규칙
  8. 8. 접근 비교: 브루트 · 해시 · 투포인터
  9. 9. 회귀 확인: 고친 뒤 다시 채점
  10. 10. 작은 테스트 직접 쓰기

질문 순서

  1. 정렬되어 있나? / 정렬해도 되나? (인덱스 손상 주의)
  2. “이전 값과 비교”인가? → 스택·모노톤
  3. “본 적 있나?” → 해시 Set/Map
  4. “구간·합·연속” → 투포인터·누적합·슬라이딩
  5. “최적 부분 구조 + 겹치는 부분” → DP
  6. “연결·최단” → BFS/DFS

빠른 매칭 표

느낌후보
페어 합, 빈도Map
회문, 정렬 배열 두 합투포인터
괄호, next greater스택
연속 부분 최적카데인·슬라이딩·DP
격자 덩어리DFS/BFS

틀렸을 때

패턴을 바꾸기 전에 파싱·경계를 먼저 의심하세요.
패턴이 틀린 경우는 추적표가 예제부터 안 맞을 때입니다.

연습

문제를 풀기 전에 주석 한 줄:

// pattern: hash · n=1e5

통과 후 실제로 쓴 패턴과 같았는지 비교하면 감이 쌓입니다.

질문 순서 (확장)

  1. 정렬되어 있나? / 정렬해도 되나? (인덱스 필요하면 인덱스 쌍을 같이 정렬)
  2. “이전 값과 비교”인가? → 스택·모노톤
  3. “본 적 있나?” → 해시 Set/Map
  4. “구간·합·연속” → 투포인터·누적합·슬라이딩
  5. “최적 + 겹치는 부분문제” → DP
  6. “연결·최단(가중치 0)” → BFS
  7. “모든 순열·부분집합” + n≤20 → 비트마스크·백트래킹

빠른 매칭 표

느낌후보
페어 합, 빈도Map
회문, 정렬 배열 두 합투포인터
괄호, next greater스택
연속 부분 최적카데인·슬라이딩·DP
격자 덩어리DFS/BFS
구간 합 질의 다수누적합

틀렸을 때

패턴을 바꾸기 전에 파싱·경계를 먼저 의심하세요.
패턴이 틀린 경우는 추적표가 예제부터 안 맞을 때입니다.

연습

문제를 풀기 전에 주석 한 줄:

// pattern: hash · n=1e5

통과 후 실제로 쓴 패턴과 같았는지 비교하면 감이 쌓입니다.

관련 짧은 원리

관련 문제