{b}탑") else: hanoi(o - 1, a, c, b) print(f"{a}탑 -> {b}탑") hanoi(o - 1, c, b, a) obj = int(input("원판의 개수를 입력하세요: ")) hanoi(obj, "A", "B", "C") # 이동 횟수 까지 출력할 때 # count = 0 # 이동 횟수 저장용 # def hanoi(o, a, b, c): # global count # if o == 1: # print(f"{a}탑 -> {b}탑") # count += 1 # else: # hanoi(o - 1, a, c, b) # print(f"{a}탑 -> {b}탑") # count += 1 # hanoi(o - 1, c, b, a) # obj = int(input("원판의 개수를 입력하세요: ")) # hanoi(obj, "A", "> {b}탑") else: hanoi(o - 1, a, c, b) print(f"{a}탑 -> {b}탑") hanoi(o - 1, c, b, a) obj = int(input("원판의 개수를 입력하세요: ")) hanoi(obj, "A", "B", "C") # 이동 횟수 까지 출력할 때 # count = 0 # 이동 횟수 저장용 # def hanoi(o, a, b, c): # global count # if o == 1: # print(f"{a}탑 -> {b}탑") # count += 1 # else: # hanoi(o - 1, a, c, b) # print(f"{a}탑 -> {b}탑") # count += 1 # hanoi(o - 1, c, b, a) # obj = int(input("원판의 개수를 입력하세요: ")) # hanoi(obj, "A", "> {b}탑") else: hanoi(o - 1, a, c, b) print(f"{a}탑 -> {b}탑") hanoi(o - 1, c, b, a) obj = int(input("원판의 개수를 입력하세요: ")) hanoi(obj, "A", "B", "C") # 이동 횟수 까지 출력할 때 # count = 0 # 이동 횟수 저장용 # def hanoi(o, a, b, c): # global count # if o == 1: # print(f"{a}탑 -> {b}탑") # count += 1 # else: # hanoi(o - 1, a, c, b) # print(f"{a}탑 -> {b}탑") # count += 1 # hanoi(o - 1, c, b, a) # obj = int(input("원판의 개수를 입력하세요: ")) # hanoi(obj, "A", ">
# 하노이 탑
# <<혼자 공부하는 파이썬>> 354p

# 하노이 탑에서 필요한 요소를 모두 매개변수로 받습니다.
# 하노이탑(원판, "시작기둥"에서 "대상기둥"으로 "보조기둥"을 활용해서):
#     if 원판이 1개:
#         이동 from 시작기둥 to 대상기둥
#
#     if 원판이 2개이상:
#         # 아래의 원판을 제외하고, 시작 기둥에서 보조 기둥으로 이동합니다.
#         하노이탑(원판 - 1, "시작기둥"에서 "보조기둥"으로 "대상기둥"을 활용해서)
#         이동 from 시작 기둥 to 대상 기둥
#         # 아래의 원판을 제외하고, 보조 기둥에서 대상 기둥으로 이동합니다.
#         하노이탑(덩어리 - 1, "보조기둥"에서 "대상기둥"으로 "시작기둥"을 활용해서)

def hanoi(o, a, b, c):
    if o == 1:
        print(f"{a}탑 -> {b}탑")
    else:
        hanoi(o - 1, a, c, b)
        print(f"{a}탑 -> {b}탑")
        hanoi(o - 1, c, b, a)

obj = int(input("원판의 개수를 입력하세요: "))
hanoi(obj, "A", "B", "C")

# 이동 횟수 까지 출력할 때
# count = 0  # 이동 횟수 저장용

# def hanoi(o, a, b, c):
#     global count
#     if o == 1:
#         print(f"{a}탑 -> {b}탑")
#         count += 1
#     else:
#         hanoi(o - 1, a, c, b)
#         print(f"{a}탑 -> {b}탑")
#         count += 1
#         hanoi(o - 1, c, b, a)

# obj = int(input("원판의 개수를 입력하세요: "))
# hanoi(obj, "A", "B", "C")
# print(f"\\n총 이동 횟수: {count}회")