2주 학습 플랜 (BOJ / Java 17)¶
목표: 핵심 알고리즘별 감각 잡기 → 실전 루틴 습관화 → 패턴/실수 축적
환경: IntelliJ + Gradle ·scripts/new-prob.sh
· MkDocs 자동 배포
매 세션 공통 루틴 (15–40분/문제)¶
1) 스캐폴드 + 입력 자동
- 실행구성: 메인
boj.p<번호>.Main
· 입력 src/main/java/boj/p<번호>/input.txt
3) 문서 3줄 원칙-
docs/problems/<번호5자리>.md
에 접근 / 복잡도 / 회고 1줄씩 4) 커밋 & 푸시 (자동화 작동)1주차 — 기초 체력 + 탐색¶
Day 1: 복잡도 감각 · 정렬/이분/파라메트릭
- 개념: 입력 범위로 허용 복잡도 가늠 / mid는 (l + r) >>> 1
- 추천: 1920, 10816, 2805
- 체크: 정렬 누락 금지, 상·하한(첫/마지막) 구분
Day 2: 두 포인터 · 슬라이딩 윈도
- 추천: 3273, 2003, 2559
- 체크: 구간 합/길이 갱신, 정렬 필요 여부 확인
Day 3: 맵/셋 · 좌표압축
- 추천: 18870, 1620, 14425
- 체크: HashMap/HashSet
성능, 문자열 입출력
Day 4: 스택/큐
- 추천: 1874, 17298, 18258
- 체크: 단조 스택 패턴(이전/다음 큰 수)
Day 5: DFS/BFS 기본
- 추천: 1260, 11724, 2606
- 체크: 방문 배열 초기화, 작은 번호 우선 정렬
Day 6: BFS 격자/최단거리
- 추천: 2178, 7576, 1697
- 체크: dist[][]
또는 visited
에 거리 저장
Day 7: 주간 회고
- 이번 주 공통 실수 Top3를 docs/index.md
에 규칙으로 누적
- 예: “정렬 잊지 않기”, “mid는 >>> 1”, “격자 BFS는 dx/dy 먼저”
2주차 — 그리디/최단경로/DSU/DP 입문¶
Day 8: 그리디
- 추천: 11047, 11399, 1541, 2217
- 체크: 정렬 기준, 반례 직접 만들기
Day 9: 우선순위 큐
- 추천: 1927, 11279, 11286
- 체크: PriorityQueue
비교자
Day 10: 다익스트라
- 추천: 1753, 1916
- 체크: (dist, node)
우큐 · 방문 확정 후 스킵
Day 11: 플로이드/그래프 응용
- 추천: 11404, 1389, (선택) 1238
- 체크: INF
설정, 3중 루프 순서
Day 12: 유니온 파인드 · MST
- 추천: 1717, 1976, 1197
- 체크: 경로 압축 + 랭크(또는 사이즈)
Day 13: DP 기초
- 추천: 1463, 9095, 2579, 1149
- 체크: 점화식 → 테이블 → 초기값 → 순회 순서
Day 14: DP 심화
- 추천: 1912, 11053, (심화) 12865
- 체크: LIS O(N log N)도 시도
실전 체크리스트¶
- [ ] 입출력: 템플릿(빠른 I/O) 사용 / 오버플로(
long
) - [ ] 정렬 필요 여부 / 중복 처리 / 인덱싱(0·1 기준)
- [ ] 방문/거리 배열 초기화, 테스트 케이스 반복 시 리셋
- [ ] 시간복잡도: N·Q·범위 기준으로 상한 검증
- [ ] 제출 전 로컬 입력으로 한 번 더 실행