Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Front-end Developer

백준 알고리즘 11729 [파이썬] 본문

알고리즘

백준 알고리즘 11729 [파이썬]

Brad Daeho Lee 2021. 3. 9. 22:09

 

배운 내용

재귀함수관련 문제중에 제일 유명하다고 할 수 있는 하노이 탑 이동 순서 문제를 풀어보았는데, 재귀함수 알고리즘 문제를 풀어본적 없는 나에겐 너무 어려운 문제였던것 같다. 하지만 이 문제를 풀고 이해하면서 재귀함수에대해서 잘 이해할 수 있었다. 

 

문제 풀이 설명은 코드안에 해놨습니다.

 

 

문제 

 

 

문제풀이

 

# 재귀함수
# 조건에 맞으면 function을 계속 반복시킨다.
n = int(input())
def hanoi_recursive(n, a, b, c):
  if n == 1:
    print(a, c)
    return

  else:
    hanoi_recursive(n-1, a, c, b) # 제일 밑에 있는 원판을 제외한 다른 원판들을 보조지역에 옮긴다.
    print(a, c) # 제일 밑에있는 원판을 목표지점에 옮긴다.
    hanoi_recursive(n-1, b, a, c) # 보조지역에 있던 다른 원판들을 목표지점으로 옮긴다.
    
    
sum = 1 # 위에 함수에 print()가 몇번 적용되는냐가 sum 값이된다.
for i in range(n-1):
  sum = sum*2 + 1  # sum*2를 하는 이유는 함수 else안에 같은 함수가 2개있고, +1 하는 이유는 함수 else안에 print가 하나 있기 때문입니다. 
print(sum)
# (원판의 개수, 시작지점, 보조, 목표지점)
hanoi_recursive(n, 1, 2, 3)



Comments