
지음 : 구종만
1.3 입문자를 위한 커리큘럼
처음 문제 해결을 공부하는 사람은 모든 주제를 깊이 있게 공부하기 전에 가장 흔히 출현하는 낸용들을 포함하는 장들을 먼저 읽어 보기를 권장합니다.
| 장 번호 | 장 제목 |
|---|---|
| 2 | 문제 해결 전략 |
| 3 | 코딩과 디버깅 |
| 4 | 알고리즘의 시간 복잡도 분석 |
| 6 | 무식하게 풀기 |
| 7 | 분할 정복 |
| 8 | 동적 계획법 |
| 18 | 선형 자료 구조 |
| 19 | 큐와 스택, 데크 |
| 21 | 트리의 구현과 순회 |
| 22 | 이전 검색 트리 |
| 23 | 우선순위 큐와 힙 |
| 27 | 그래프의 표현과 정의 |
| 28 | 그래프의 깊이 우선 탐색 |
| 29 | 그래프의 너비 우선 탐색 |
| 30 | 최단 경로 알고리즘 |
2.2 프로그래밍 대회를 위한 여섯 단계 문제 해결 알고리즘
- 문제를 읽고 이해한다
- 문제를 익숙한 용어로 재정의 한다
- 어떻게 해결할지 계획을 세운다
- 계획을 검증한다
- 프로그램으로 구현한다
- 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다
참고로 파인만 알고리즘은 아래와 같다
- 칠판에 문제를 적는다
- 골똘히 생각한다
- 칠판에 답안을 적는다
2.3 체계적인 접근을 위한 질문들
- 비슷한 문제를 풀어본 적이 있던가
- 단순한 방법에서 시작할 수 있을까
- 내가 문제를 푸는 과정을 수식화할 수 있을까
- 문제를 단순화할 수 없을까
- 그림으로 그려볼 수 있을까
- 수식으로 표현할 수 있을까
- 문제를 분해할 수 있을까
- 뒤에서부터 생각해서 문제를 풀 수 있을까
- 순서를 강제할 수 있을까
- 특정 형태의 답만을 고려할 수 있을까