honey_pot

[Python] 하노이의 탑 본문

문제 풀이

[Python] 하노이의 탑

_tera_ 2022. 9. 22. 13:19

https://school.programmers.co.kr/learn/courses/30/lessons/12946


https://shoark7.github.io/programming/algorithm/tower-of-hanoi

위 링크에 알고리즘이 잘 설명되어 있다 첫번째 코드는 위 링크의 설명대로 작성했다

두번째 코드는 move 함수를 쓰지 않고 hanoi 함수 하나로 해결하는 코드다

 

hanoi 함수로만 풀이할 경우 move 함수 대신 hanoi 함수에 n==1 파라미터를 주고 answer에 이동과정을 저장하는 조건문으로 변경한다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(n):
    answer = []
    def hanoi(n,start,via,to):
        if n == 1:
            move(1,start,to)
        else:
            hanoi(n-1,start,to,via)
            move(n,start,to)
            hanoi(n-1,via, start,to)
    def move(n, start, to):
        answer.append([start,to])
    hanoi(n,1,2,3)
    return answer
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(n):
    answer = []
    def hanoi(n,start,via,to):
        if n == 1:
            answer.append([start,to])
        else:
            hanoi(n-1,start,to,via) # 1에서 3을 거쳐 2로
            hanoi(1,start,via,to) # 저장 부분
            hanoi(n-1,via,start,to) # 2에서 1을 거쳐 3으로
 
    hanoi(n,1,2,3)
    return answer
 
cs

'문제 풀이' 카테고리의 다른 글

[Python] 정수 삼각형  (0) 2022.09.22
[Python] N-Queen  (0) 2022.09.22
[Python] 가장 큰 정사각형 찾기  (1) 2022.09.21
[Python] 줄 서는 방법  (1) 2022.09.21
[Python] 쿼드압축 후 개수 세기  (0) 2022.09.21
Comments