본문 바로가기
Daily Log/Books

프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 by 구종만

by HZie 2020. 10. 25.

프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 by 구종만

2. 문제 해결 전략

[문제 해결 과정]

문제 해결 과정에는 정답이 딱히 정해져 있지는 않지만 일반적으로 많이 쓰이는 순서를 적어보자면 다음과 같다.

1. 문제를 제대로 읽고 이해하기
    -> 문제를 읽고 이해한다
2. 문제 재정의 & 추상화하기
    -> 문제를 익숙한 용어로 재정의한다
3. 계획 세우기
    -> 어떻게 해결할지 계획을 세운다
4. 계획 검증하기
    -> 계획을 검증한다
5. 계획 수행하기
    -> 프로그램으로 구현한다.
6. 회고하기
    -> 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. 

1번같은 경우는 나도 중요하게 생각하는 부분이다. 정말 문제를 빨리 풀려고 조급하게 다가가다보면 오히려 제대로 문제를 풀지 못할 경우가 생긴다. 만약 내가 문제를 제대로 이해했다면 이런 경우가 현저히 줄어들 것이라고 생각한다.

 

[문제 해결 전략]

글쓴이는 여기서 직관성과 체계적인 접근이 중요하다고 얘기한다. 그러면 어떻게 하면 그렇게 문제에 접근할 수 있을까? 나는 문제를 많이 풀어보고 정확히 자신의 코드를 회고하고 문제를 풀 당시의 생각들을 잘 정리하는 것이라고 생각한다. 다음에는 글쓴이가 제시한 체계적으로 문제에 접근하기 할 때 생각해볼 질문들을 적어보고자 한다.

- 비슷한 문제를 풀어본 적이 있던가?
- 단순한 방법에서 시작할 수 있을까?
- 내가 문제를 푸는 과정을 수식화할 수 있을까?
- 문제를 단순화할 수 없을까?
- 그림으로 그려볼 수 있을까?
- 수식으로 표현할 수 있을까?
- 문제를 분해할 수 있을까?
- 뒤에서부터 생각해서 문제를 풀 수 있을까?
- 순서를 강제할 수 있을까?
- 특정 형태의 답만을 고려할 수 있을까?

 

마지막으로는 더 읽을 거리가 있었다. 나는 이 책 (총 2권)을 다 끝내고 여기서 추천해준 책도 읽어보려고 한다.

- 어떻게 문제를 풀 것인가 (How to Solve It)

    -> 번역이 직관적이지 않다고 하니까 원서를 찾아서 읽어보는 것도 좋을 것 같다.

- 클린코드 (Clean Code by Martin)

댓글