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