문제를 읽고 이해한다. 문제를 익숙한 용어로 재정의한다. 어떻게 해결할지 계획을 세운다. 계획을 검증한다 프로그램으로 구현한다. 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. 체계적인 접근을 위한 질문들 비슷한 문제를 풀어본 적이 있던가? 단순한 방법에서 시작할 수 있을까? 내가 문제를 푸는 과정을 수식화할 수 있을까? 문제를 단순화 할 수 없을까? 그림으로 그려볼 수 있을까? 수식으로 표현할 수 있을까? 문제를 분해할 수 있을까? 뒤에서부터 생각해서 문제를 풀 수 있을까? 순서를 강제할 수 있을까? 특정 형태의 답만을 고려할 수 있을까? 좋은 코드를 짜기 위한 원칙 간결한 코드를 작성하기 적극적으로 코드를 재사용하기 표준 라이브러리 공부하기 항상 같은 형태로 프로그램을 작성하기 일관적이고 ..