왜 비교하나
한 가지 방법만 떠올리면, 제약이 바뀔 때( n이 커짐 · 메모리 제한 ) 대응이 느립니다.
2~3줄씩 대안을 적어 두고 고르는 습관이 필요합니다.
흔한 삼각
| 접근 | 감각적 비용 | 언제 |
|---|---|---|
| 브루트 이중 루프 | O(n²) | n≤10³, 검증용 |
| 해시 맵/셋 | 평균 O(n) | 존재·빈도·쌍 |
| 정렬+투포인터 | O(n log n) | 합/구간, 순서 가능 |
예: “두 수의 합이 k”
- 모든 쌍 검사
k-x를 셋에서 찾기- 정렬 후 L/R 이동
제약이 n=10⁵면 1번은 버리고 2/3을 고릅니다.
비교 메모 템플릿
문제:
A) …
B) …
C) …
선택: B · 이유: n=1e5, 평균 O(n)
버릴 이유: A는 TLE, C는 원본 인덱스 필요 시 불편
반례로 탈락
그리디·투포인터는 반례 하나로 후보에서 빼세요.
해시는 키 설계(대소문자·공백)만 조심하면 탈락이 적습니다.
이 사이트 루프
- 사고 트랙의 의사코드 레슨으로 뼈대
- 원리 트랙에서 해당 패턴 읽기
- 태그 맞는 문제 1개만 채점
체크리스트
- 브루트 해를 말로 설명할 수 있나? (정답 검증용)
- 더 빠른 후보가 2개 이상인가?
- 제약(n, 값 범위)에 맞는가?
연습
북마크한 배열 문제 하나에 A/B/C 표를 채워 보세요. 코드는 그다음입니다.
한 줄
> 먼저 후보를 나란히 두고, 제약이 선택한다.
예: 아나그램 여부
A) 정렬 후 비교
B) 빈도 배열/맵
C) 이중 루프로 문자 소거
길이 10⁵면 C는 버리고, 유니코드·대소문자 규칙에 따라 A/B를 고릅니다.
비교표를 습관으로 두면 “해시부터” 같은 편향도 줄습니다.
더 깊게
읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.
관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.
막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.