2.1 도입
좋은 문제해결자가 되기 위해서는 문제를 푸는 기술을 연마해야한다.
• 자신이 문제를 어떤 방식으로 해결하는지를 의식
• 어떤 부분을 개선해여하는지 파악
2.2 문제 해결 과정
1단계: 문제를 읽고 이해하기
문제 설명을 공격적으로 읽으며 문제가 원하는 바를 완전히 이해하는 과정
2단계: 재정의와 추상화
문제를 자신이 직관적으로 이해하기 쉽게 추상화하는 과정
3단계: 계획 세우기
어떻게 해결할 것인지 계획을 수립하는 과정
4단계: 계획 검증하기
설계한 알고리즘이 모든 경우에 요구 조건을 정확히 수행하는지 증명하고, 수행시간과 사용하는 메모리가 제한조건에 만족하는지 확인하는 과정
5단계: 계획 수행하기
프로그램을 작성하는 과정
6단계: 회고하기
자신의 문제 해결 과정을 돌이켜보고 개선하는 과정
문제의 간단한 해법과 함께 어떤 방식으로 접근 했는가?
문제의 해법을 찾는데 결정적이었던 깨달음은?
오답의 원인은?
문제를 해결한 다른 사람의 코드는?
※문제를 풀지 못할 때
다른 사람의 소스 코드나 풀이를 참조하고 어떻게 풀었는지 생각해 본다.
자신의 문제해결 방법과 비교해본다.
2.3 문제 해결 전략
1. 직관과 체계적인 접근
2. 체계적인 접근을 위한 질문들
3. 비슷한 문제를 풀어본 적이 있던가?
4. 단순한 방법에서 시작할 수 있을까?
5. 내가 문제를 푸는 과정을 수식화할 수 있을까?
6. 문제를 단순화할 수 없을까?
7. 그림으로 그려볼 수 있을까?
8. 수식으로 표현할 수 있을까?
9. 문제를 분해할 수 있을까?
10. 뒤에서부터 생각해서 문제를 풀 수 있을까?
11. 순서를 강제할 수 있을까?
12. 특정 형태의 답만을 고려할 수 있을까?
2.4 더 읽을거리
[how to solve it]