Page 22 -
P. 22
프로그래머처럼 생각하기
어떤 문제를 어떤 방향에서 접근할지 생각할 때 그림을 그려 보는 것은 아주 중요하다. 그림을 그리는 과정에서 한 방
법에 매몰되지 않고 여러 방법을 생각할 수 있다. 코딩을 바로 시작하면 여러분이 생각한 한 가지 경로에만 매몰될 수
있다. 그 경로가 문제 해결에 적합할 수도 있지만, 적합하지 않을 수도 있다. 그림을 그리는 과정을 거치면 다양한 해
법을 검토하면서 발생할 수 있는 문제를 찾아내고 제대로 된 해법을 찾는 데 도움이 된다.
첫 번째 방식은 이해하기 쉽지만 지금까지 배운 지식만으로 구현하기는 힘들다. 가지고 있는 타일
로 만들 수 있는 모든 조합이나 순열(permutation)을 찾는 과정이 들어 있기 때문이다. 현재로서는
두 번째 방식이 더 적합하다. 그림 19-2는 두 번째 방식을 나타낸 것이다.
그림 19-2 올바른 단어 목록과 타일 목록이 주어졌을 때 올바른 단어를 가져와서 그 단어에 있는 문자가 타일 목록에 다 들어 있
는지 검사할 수 있다. 문자가 다 들어 있다면 그 단어를 만들 수 있는 단어 목록에 추가한다. 단어에 있는 문자 중 하나라도 타일 목록에
없다면 주어진 타일로는 그 단어를 만들 수 없다
ৢ߄ܲ ױয ݾ۾
" 3 5 ఋੌ ݾ۾
) 6 & 5 , " # 3
* / ,
" 3 5 ) 6 & * / ,
ইפয় ইפয়
5 , " # 3 5 , " # 3 5 , " # 3
올바른 단어를 놓고 각 단어 안에 있는 문자들이 타일에 있는지 검사한다. 단어에 있는 문자를 검
사했을 때 타일에 문자가 다 있다면 주어진 타일로 그 단어를 만들 수 있다. 타일 안에 없는 글자
를 한 글자라도 발견한다면 단어를 만들 수 없으므로 그 즉시 해당 단어를 제외할 수 있다.
19.1.2.2 몇 가지 예 생각해보기
몇 가지 예를 생각해 보면 코드에서 주의해야 할 특별한 경우를 찾을 수 있다. 다음 예는 코드가
잘 처리해야 하는 특별한 경우다.
● 타일이 하나만 있는 경우: 올바른 단어를 하나도 만들 수 없다.
● 주어진 타일로 올바른 단어를 딱 한 개만 만들 수 있는 경우: tiles = "art"라면 art라는 단
어만 만들 수 있다.
234
모던 파이썬 입문(본문)5차_최종.indd 234 2019-09-26 오후 9:33:41