콘텐츠로 이동

2주 학습 플랜 (BOJ / Java 17)

목표: 핵심 알고리즘별 감각 잡기 → 실전 루틴 습관화 → 패턴/실수 축적
환경: IntelliJ + Gradle · scripts/new-prob.sh · MkDocs 자동 배포


매 세션 공통 루틴 (15–40분/문제)

1) 스캐폴드 + 입력 자동

PYTHON_BIN=py ./scripts/new-prob.sh <번호> --fetch   # 실패 시 --clipboard/--stdin
2) 구현 & 로컬 실행
- 실행구성: 메인 boj.p<번호>.Main · 입력 src/main/java/boj/p<번호>/input.txt 3) 문서 3줄 원칙
- docs/problems/<번호5자리>.md접근 / 복잡도 / 회고 1줄씩 4) 커밋 & 푸시 (자동화 작동)
1
2
3
git add src/main/java/boj/p<번호>/Main.java docs/problems/<번호5자리>.md
git commit -m ":sparkles: feat(boj): <번호5자리> <주제> 풀이"
git push
- README 표 & 사이트 네비는 Actions가 자동 반영


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: 주간 회고
- 이번 주 공통 실수 Top3docs/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·범위 기준으로 상한 검증
  • [ ] 제출 전 로컬 입력으로 한 번 더 실행