기본 목록 (복사해 쓰기)
- 빈 입력 / 빈 배열 / 빈 문자열
- 길이 1
- 길이 2 (투포인터·교환에 중요)
- 모든 원소 동일
- 이미 원하는 상태 (정렬됨, 회문임)
- 최댓값·최솟값이 답에 포함
- 중복이 많을 때
- 음수·0 혼재 (합·곱·정렬)
- “답 없음” 경로 (-1, 빈 문자열, 0)
SQL이라면:
- NULL이 있는 행
- 조인 결과 0행
- 집계 대상 0건 (
COUNT는 0,AVG는 NULL일 수 있음)
복잡도 엣지
n이 최대일 때 O(n²)이면 실패합니다.
엣지는 값만이 아니라 크기입니다.
문제 지문에 1 ≤ n ≤ 100000이 있으면, 머릿속으로 “이중 루프면 안 된다”를 먼저 적으세요.
출력 엣지
- 끝에 공백·개행
- 정수인데 문자열
"01"vs"1" - 부동 소수점 자릿수 (이 사이트는 보통 정수·문자열)
- 여러 답을 허용하는지 (어느 인덱스든 OK인지 사전순인지)
작성 습관
코딩 시작 전에 주석으로:
// edges: empty, n=1, all equal, negatives, no-answer
통과 후에도 한 케이스는 일부러 엣지로 넣어 보세요.
회귀를 스스로 만드는 연습입니다.
체크리스트를 코드 주석으로
// edges: empty, n=1, n=2, all-same, already-ok, min/max, dupes, neg/zero, no-answer
작성 전에 한 번, 제출 전에 한 번 훑습니다.
SQL 추가 목록
- NULL 키로 JOIN
- GROUP BY 후 0개 그룹
- DISTINCT와 COUNT 혼동
랜덤 테스트 (연습장)
작은 입력을 손으로 만든 뒤, 느린 완전탐색 결과와 비교하면 자신만의 채점이 됩니다.
(완전탐색은 n을 아주 작게.)
빠른 목록
빈 입력 · n=1 · 최댓값 · 중복 · 음수 · 이미 정렬됨 · 역순. 문제마다 해당되는 것만 고르세요.