Page 238 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 238

스택에 쌓인 데이터가 가장 많을 때는  e  와  h  입니다. 따라서 스택의 용량은 3 이상이어야 합

                   니다. 이때 배열을 나눈 뒤에 얻는 왼쪽 그룹, 오른쪽 그룹의 요소 개수를 비교하여 그 많고 적
                   음에 따라 푸시 순서를 바꾸면 스택에 쌓이는 데이터의 개수를 조절할 수 있습니다. 푸시 순서
                   는 아래처럼 두 가지 방법을 사용할 수 있습니다.


                     1. 요소의 개수가 많은 그룹을 먼저 푸시합니다.
                     2. 요소의 개수가 적은 그룹을 먼저 푸시합니다.



                   이 두 가지 방법의 차이를 구체적인 예를 들어 살펴보겠습니다.



                   1. 요소의 개수가 많은 그룹을 먼저 푸시하는 경우
                   예를 들어  b  에서 꺼낸 a[0] ~ a[7]은 a[0] ~ a[1], a[2] ~ a[7]로 나누어집니다. 요소의 개수가
                   많은 {2, 7}을 먼저 푸시하면 스택은  c  처럼 됩니다. 먼저 팝되어 나누어지는 배열은 요소의 개
                   수가 적은 그룹 {0, 1}입니다( d  ). 이렇게 하면 스택에 쌓여 있는 데이터의 최대 개수는 2가 됩니

                   다(  c  ,  f  ,  i  ).


                     요소의 개수가 많은 그룹을 먼저 푸시합니다.


                         {0, 7}    {0, 7}을 분할  {2, 7}, {0, 1}  {0, 1}을 분할  {2, 7}을 분할  {2, 5}, {6, 7}





                                                0 1                               6 7
                          0 7                   2 7         2 7                   2 5
                           a          b          c          d           e          f


                       {6, 7}을 분할  {2, 5}를 분할  {2, 3}, {4, 5}  {4, 5}를 분할  {2, 3}을 분할  종료






                                                4 5
                          2 5                   2 3         2 3
                           g          h          i           j          k          l
                                             [그림 6-25] 스택의 변화 과정(2)








                   238   C 알고리즘
   233   234   235   236   237   238   239   240   241   242   243