사고 · intermediate

접근 비교: 브루트 · 해시 · 투포인터

같은 문제를 여러 방법으로 스케치하고, 제약에 맞는 것을 고릅니다.

배우기 · 문제 푸는 사고 · 14분 · 8/10 · 사고 · 복잡도

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

왜 비교하나

한 가지 방법만 떠올리면, 제약이 바뀔 때( n이 커짐 · 메모리 제한 ) 대응이 느립니다.
2~3줄씩 대안을 적어 두고 고르는 습관이 필요합니다.

흔한 삼각

접근감각적 비용언제
브루트 이중 루프O(n²)n≤10³, 검증용
해시 맵/셋평균 O(n)존재·빈도·쌍
정렬+투포인터O(n log n)합/구간, 순서 가능

예: “두 수의 합이 k”

  1. 모든 쌍 검사
  2. k-x를 셋에서 찾기
  3. 정렬 후 L/R 이동

제약이 n=10⁵면 1번은 버리고 2/3을 고릅니다.

비교 메모 템플릿

문제:
A) …
B) …
C) …
선택: B · 이유: n=1e5, 평균 O(n)
버릴 이유: A는 TLE, C는 원본 인덱스 필요 시 불편

반례로 탈락

그리디·투포인터는 반례 하나로 후보에서 빼세요.
해시는 키 설계(대소문자·공백)만 조심하면 탈락이 적습니다.

이 사이트 루프

  1. 사고 트랙의 의사코드 레슨으로 뼈대
  2. 원리 트랙에서 해당 패턴 읽기
  3. 태그 맞는 문제 1개만 채점

체크리스트

  1. 브루트 해를 말로 설명할 수 있나? (정답 검증용)
  2. 더 빠른 후보가 2개 이상인가?
  3. 제약(n, 값 범위)에 맞는가?

연습

북마크한 배열 문제 하나에 A/B/C 표를 채워 보세요. 코드는 그다음입니다.

한 줄

> 먼저 후보를 나란히 두고, 제약이 선택한다.

예: 아나그램 여부

A) 정렬 후 비교
B) 빈도 배열/맵
C) 이중 루프로 문자 소거

길이 10⁵면 C는 버리고, 유니코드·대소문자 규칙에 따라 A/B를 고릅니다.

비교표를 습관으로 두면 “해시부터” 같은 편향도 줄습니다.

더 깊게

읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.

관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.

막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.

관련 짧은 원리

관련 문제