목표
문제를 한 번 훑고 바로 코딩하지 않습니다.
5분이 아깝지 않습니다. 잘못된 이해가 30분을 태웁니다.
읽기 체크리스트
- 입력 형식: 한 줄? 여러 줄? 공백 구분? 첫 줄이 n인가?
- 출력 형식: 숫자? 문자열? 개행? 공백 구분? 정확한 표기
- 제약: n 최대, 값의 범위, 시간·메모리 힌트
- 목표: 최댓값? 존재 여부? 모든 경우의 수? 원본 인덱스?
- 예외: 빈 입력, n=0, 음수, 중복, “답 없음”
종이나 주석에 한 줄로 요약하세요.
입력: 첫 줄 n, 둘째 줄 n개 정수
출력: 두 수의 합이 target인 인덱스 두 개 (0-based)
제약: n ≤ 1e5 → O(n) 또는 O(n log n)
예외: 답이 없으면 -1 -1
제약 → 복잡도 감각
| n 대략 | 허용되는 감각 |
|---|---|
| ≤ 20 | 지수·완전탐색도 가능 |
| ≤ 100 | O(n³) 아슬 |
| ≤ 1e3 | O(n²) 가능 |
| ≤ 1e5 | O(n log n) ~ O(n) |
| ≤ 1e6+ | 거의 O(n) · O(n log n) 타이트 |
정확한 시간 제한은 환경마다 다르지만, 제약만 보고 후보 알고리즘을 줄이는 습관이 중요합니다.
출력 계약을 글로 쓰기
“합을 출력”이 아니라:
- 정수 하나인가, 공백으로 두 개인가
- 여러 테스트면 케이스마다 한 줄인가
- 끝 개행이 예제에 있는가
채점은 문자열 비교에 가깝습니다. 형식이 틀리면 논리가 맞아도 실패합니다.
다음 행동
요약을 적은 뒤에야 자료구조·패턴을 고릅니다.
그다음 레슨 예제 추적으로 손을 움직이세요.
5분 메모 템플릿
입력:
출력:
제약(n/값):
예제1 손으로:
함정(빈 배열/1개/중복/음수):
후보 패턴:
이 메모를 채우기 전에는 에디터를 열지 않아도 됩니다.
채운 뒤에도 예제 1개만 손으로 검증한 다음 코딩을 시작하세요.
이 사이트에서
문제 본문·예제·힌트·관련 원리를 먼저 스크롤로 확인하세요.
입력이 여러 줄이면 연습장에서 readline/input 패턴을 먼저 확인하는 편이 안전합니다.