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
   17   18   19   20   21   22   23   24   25   26   27