Page 23 -
P. 23

●   주어진 타일로 올바른 단어를 두 개만 만들 수 있는 경우: tiles = "euhtar"라면 art와 hue
                         라는 두 단어만 만들 수 있다.

                       ●   주어진 타일로 올바른 단어를 하나 만들고 타일이 몇 개 남는 경우: tiles = "tkabr"라면
                         art를 만들 수 있고 k와 b가 남는다.
                       ●   올바른 단어에 있는 문자 타일을 다 가지고 있지만, 단어에서는 같은 문자를 2번 이상 사용
                         하는데 타일은 한 개밖에 없는 경우: tiles = "colr"라면 o가 1개뿐이므로 color라는 단어
                         를 만들 수 없다.



                    19.1.2.3  해법을 의사 코드로 추상화하기

                    의사 코드를 사용하면 앞의 예를 생각하면서 발견한 것을 더 자세히 생각해 볼 수 있다. 올바른 단
                    어를 하나씩 가져와서 타일을 가지고 그 단어를 만들 수 있는지 모두 살펴봐야 한다. 따라서 루프
                    가 필요하다. 단어에 있는 각 문자를 살펴봐야 하므로 여기서도 루프가 필요하다. 이 루프는 올바                            19

                    른 단어에 대한 첫 번째 루프에 내포된 루프여야 한다. 내포된 루프에서 살펴보다가 문자가 타일
                    에 없으면 즉시 루프를 끝내고, 타일이 있으면 루프를 계속 진행한다.

                    이 로직에서 어려운 곳은 두 군데다. (1) 같은 문자가 여러 번 나오는 경우를 어떻게 처리할 것인
                    가? (2) 타일에서 단어에 들어 있는 글자를 모두 찾은 경우를 어떻게 알 수 있을까? 이 두 문제를                          진급 프로젝트: 스크래블:아트 단어 게임
                    어떻게 해결할지를 의사 코드에 자세히 작성할 필요는 없다. 하지만 두 문제를 해결할 수 있는지
                    아닌지는 말할 수 있어야 한다. 나는 두 문제를 모두 해결할 수 있다고 말할 수 있다. 그 방법은 다

                    음 절에서 알려주겠다. 의사 코드는 다음과 같다.

                      for word in valid_words:
                           for letter in word:
                               if letter가 tiles에 있지 않음:
                                   나머지 글자를 살펴보는 일을 중단하고 다음 단어를 처리한다
                               else:
                                   letter를 tiles에서 제거한다(글자 중복 처리를 위해)
                           if tiles에서 word에 들어 있는 모든 글자를 찾음:
                               word를 found_words에 추가한다

                    프로젝트 문제를 해결하는 데는 그동안 봐왔던 프로그램에 비해 처리해야 할 일도 많고 추적해야
                    할 변수도 많다는 점을 알게 됐을 것이다! 처음부터 문제를 심사숙고하지 않았다면 방향을 잃고
                    헤맸을 가능성이 크다. 이제 문제를 해결하는 데 주요한 요소를 모두 이해했으므로 코드를 작성해

                    보자. 코딩할 때 중요한 첫 번째 단계는 코드를 더 작고 다루기 쉬운 덩어리로 나누는 것이다.



                                                                                                  235





     모던 파이썬 입문(본문)5차_최종.indd   235                                                           2019-09-26   오후 9:33:41
   18   19   20   21   22   23   24   25   26   27