QuizWit

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ QuizWit ] in KIDS
글 쓴 이(By): Papillon (    kaputt)
날 짜 (Date): 2007년 10월  7일 일요일 오전 02시 01분 57초
제 목(Title): Re: [Q] 프리셀에서


일단 (n+1)을 한 묶음으로 생각한다는 점은 제가 잘 이해했습니다.
이론적으로도 이해했고, 실제로 n=1, m=2인 경우를 '낱장으로' 옮기면서도
이해했습니다. 그런데 cdpark님이 제시하신 답을 확인하기 위해
다시 시뮬레이션을 하던 중 n=0, m=3의 경우에 8장을 한꺼번에
옮길 수 있다는 것을 추가로 알게 되었습니다. 물론 저도 처음에는
taiyou님처럼 sum(1:m)+1 을 해답으로 생각했지만요...

아래의 경우에 다음의 방법이 실제로 가능합니다.
(시각적인 효과를 위해 숫자를 아래에서 위 순으로 적겠습니다.)

    from{8,7,6,5,4,3,2,1}, m0{}, m1{}, m2{}, to{}
--> ...
--> ...
--> from{}, m0{4,3,2,1}, m1{6,5}, m2{7}, to{8}
--> ...
--> ...
--> from{}, m0{}, m1{}, m2{}, to{8,7,6,5,4,3,2,1}


m0에 4장을 옮길 수 있는 것은 결국 이 문제가 재귀적으로 n=0, m=2
의 경우와 같기 때문입니다. 이 부분만 구체적으로 보이면,

from                 m2     m1       m0           to
아래           위
{8,7,6,5,4,3,2,1}    { }    {   }    {       }    { }
{8,7,6,5,4,3,2  }    {1}    {   }    {       }    { }
{8,7,6,5,4,3    }    {1}    {2  }    {       }    { }
{8,7,6,5,4,3    }    { }    {2,1}    {       }    { }
{8,7,6,5,4      }    {3}    {2,1}    {       }    { }
{8,7,6,5        }    {3}    {2,1}    {4      }    { }
{8,7,6,5        }    { }    {2,1}    {4,3    }    { }
{8,7,6,5        }    {1}    {2  }    {4,3    }    { }
{8,7,6,5        }    {1}    {   }    {4,3,2  }    { }
{8,7,6,5        }    { }    {   }    {4,3,2,1}    { }

나중에 to column으로 옮길 때는 이 과정을 역순으로 수행하면
됩니다. 

...as I'm sitting here doing nothing but aging,
  still my guitar gently weeps...

    --- George Harrison
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.