반응형
문제
https://www.acmicpc.net/problem/11729





친숙한 문제이다. 몇몇분들은 실제로 해봤을것이다.

재귀와도 잘 맞는 문제이다. 하지만 실제로 방법을 아는것과 구현하는 것은 조금 다를수

 있다는걸 깨달았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def hanoi(n,start,mid,end):
    if n==1:
        print(start, end)
 
    else:               #다음 원판을 옮기기 위해선
        hanoi(n-1,start,end,mid)    #이전완성단계 에서
        print(start, end)           #제일아래에 들어갈 원판을 옮기고
        hanoi(n-1,mid,start,end)    #이전 단계에서 했던방식을  통해 제일 아래에 들어갈 원판 위에 다시쌓는다.
        
        
n=int(input())
sum=1
for i in range(n-1):    #총옮길 횟수는 따로 계산해줬다.
    sum=sum*2+1     #두번째 else문에서 보이듯이 이전단계보다 2배+1만큼 늘어나는 걸 볼수있다.
print(sum)  #총횟수 출력
hanoi(n,1,2,3)  

cs




반응형

'알고리즘(python) > 기본' 카테고리의 다른 글

[Python]동적계획법 백준 1003  (0) 2020.01.07
[Python]동적계획법 백준 2748  (0) 2020.01.07
[Python]재귀 백준 2447  (0) 2019.12.17
[Python]재귀 백준 10870  (0) 2019.12.17
[Python]재귀 백준 10872  (0) 2019.12.17
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기