728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다.
- 한 번에 하나의 원판만 옮길 수 있습니다.
- 큰 원판이 작은 원판 위에 있어서는 안됩니다.
하노이 탑의 세 개의 기둥을 왼쪽 부터 1번, 2번, 3번이라고 하겠습니다. 1번에는 n개의 원판이 있고 이 n개의 원판을 3번 원판으로 최소 횟수로 옮기려고 합니다.
1번 기둥에 있는 원판의 개수 n이 매개변수로 주어질 때, n개의 원판을 3번 원판으로 최소로 옮기는 방법을 return하는 solution를 완성해주세요.
풀이


Code
def solution(n):
# 1. hanoi 함수 정의
def hanoi(n) :
# 1-1. hanoi_sub 함수 실행
hanoi_sub(n, 1, 3, 2)
# 2. hanoi_sub 함수 정의
def hanoi_sub(n, start, end, mid) :
# 2-1. 종료 조건 설정
if n == 1 :
# 디스크 이동
move_disk(start, end)
return
# 2-2. hanoi_sub 함수 실행
hanoi_sub(n-1, start, mid, end)
# 2-3. 디스크 이동
move_disk(start, end)
# 2-4. hanoi_sub 함수 실행
hanoi_sub(n-1, mid, end, start)
# 3. 디스크 이동 함수 정의
def move_disk(start, end) :
# 3-1. 디스크 이동 결과 삽입
answer.append([start, end])
answer = []
# 4. hanoi 함수 실행
hanoi(n)
# 5. 결과 리턴
return answer
728x90
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[Python/Programmers] 괄호 회전하기 (0) | 2023.09.04 |
---|---|
[Python/Programmers] 혼자 놀기의 달인 (0) | 2023.08.31 |
[Python/Programmers] 미로 탈출 (1) | 2023.08.31 |
[Python/Programmers] 가장 큰 수 (0) | 2023.08.28 |
[Python/Programmers] 여행 경로 (0) | 2023.08.28 |