-
재귀_하노이의 탑 알고리즘코테 준비/구현 2023. 12. 8. 22:04
hanoi(N, start, to, via): start에서 to로 via를 거쳐 총 N개의 원반을 운반할 때
- hanoi(3, ‘A’, ‘C’, ‘B’): 3개의 원반을 A에서 C로 B를 거쳐 옮기는 과정
- hanoi(2,'A,',B','C'): 우선 두개의 원반을 B로 옮겨놓고 3번 원반을 C로 옮겨야함
- hanoi(2, ‘B’, ‘C’, ‘A’): 3번 원반을 C로 옮긴 후 B에 있는 2개의 원반을 C로 옮김
N개의 원반을 옮기려면 N-1개의 원반을 B로 옮겨놓고 N번째 원반을 C로 옮긴 다음 N-1개의 원반을 B에서 C로 다시 옮겨야함 해당 알고리즘을 토대로 코드를 작성해보면
def move(n,start,to): print("{}에서 {}로 이동".format(n,start,to)) def hanoi(n,start,to,via): if n==1: move(1,start,to) else: hanoi(n-1,start,via,to) move(n,start,to) hanoi(n-1,via,to,start)
프로그래머스 하노이의 탑
https://school.programmers.co.kr/learn/courses/30/lessons/12946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(n): answer = [] def move(n,start,to): answer.append([start,to]) def hanoi(n,start,to,via): if n==1: move(1,start,to) else: hanoi(n-1,start,via,to) move(n,start,to) hanoi(n-1,via,to,start) hanoi(n,1,3,2) return answer
'코테 준비 > 구현' 카테고리의 다른 글
[백준] 10431. 줄세우기 (0) 2024.02.08 프로그래머스_삼각달팽이 (0) 2023.12.09 [백준] 1916. 최소비용 구하기 (다익스트라 알고리즘) (0) 2023.10.13 [프로그래머스] 셔틀버스 (0) 2023.03.02 [백준] 1173. 운동 (0) 2023.02.26 - hanoi(3, ‘A’, ‘C’, ‘B’): 3개의 원반을 A에서 C로 B를 거쳐 옮기는 과정