Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 개발자 취업
- 파이썬
- 티스토리챌린지
- Laravel
- 코딩테스트
- Flutter
- c++ 코테
- C++
- til
- flutter getx
- Python
- ML
- 코테
- 항해99
- 플러터
- 오블완
- 코딩테스트준비
- 코딩테스트 준비
- 뷰
- react
- 안드로이드
- vue
- 파이썬 코테
- 백준
- 코테 파이썬
- 개발자취업
- 99클럽
- DP
- 알고리즘
- 라라벨
Archives
- Today
- Total
잡다로그
[Python/코테] 백준 11729 하노이 탑 이동 순서 본문
11729 하노이 탑 이동 순서
문제 및 조건 설명: https://www.acmicpc.net/problem/11729

알고리즘 설계
💡idea.
어떠한 규칙은 있지만, 모든 경우를 따져주기에는 복잡해 보인다.
→ 절차지향적 사고가 아닌, 귀납적 사고로 접근하자❗ 단계별로 생각해서 일반항을 유추해 내는 것이 아니라, 특정 규칙(해당 문제에서는 'i에서 k로 이동한다.')이 반복되면 n항에도 적용이 된다는 귀납적 사고를 적용하는 것. 단계별로 어떤 모양이 될지를 고민하지 말 것. 그냥, 냅다, 적용하기.
즉, 가장 큰 n번 원판을 옮기기 위해서는
- n-1개의 원판을 전부 기둥 1에서 기둥 2로 옮긴다.
- n번 원판을 기둥 1에서 기둥 3으로 옮긴다.
- n-1개의 원판을 기둥 2에서 기둥 3으로 옮긴다.
→ 재귀를 활용한다.
🎲step.
1. 함수의 정의 - 어떤 역할? 어떤 인자?
def func(n) # 원판 n개를 기둥 1에서 기둥 3으로 옮기는 방법을 출력하는 함수
그러나, 이 함수는 n-1 원판을 기둥2로 옮길 때 사용할 수 없다. (기둥 3으로 옮기는 동작을 하기 때문)
def func(a, b, n) # 원판 n개를 a에서 b 기둥으로 옮기는 방법을 출력하는 함수
2. base condition (종료 조건)
n=1일 때, a에서 b로 옮기도록 한다. (수행 과정을 출력해야 하므로, print한다.)
print(a, ' ', b)
3. 재귀식
a에서 b기둥으로 원판 n개를 옮기고 싶을 때
- n-1개의 원판을 기둥 a에서 기둥 6-a-b로 옮긴다.
- n번 원판을 기둥 a에서 기둥 b로 옮긴다.
- n-1개의 원판을 기둥 6-a-b에서 기둥 b로 옮긴다.
func(a, 6-a-b, n-1)
print(a, ' ', b)
func(6-a-b, b, n-1)
알고리즘 구현
n = int(input())
def move(a, b, n): # 원판 n개를 a에서 b기둥으로 옮기는 함수
if n == 1:
print(a, b)
else:
move(a, 6-a-b, n-1)
print(a, b) # move(a,b,1)
move(6-a-b, b, n-1)
print(pow(2, n)-1)
move(1, 3, n)
이동 횟수 계산하는 방법은 이해가 잘 안되어 추후 추가하도록 하겠음 ..
출처:
https://youtu.be/8vDDJm5EewM?si=K0RQM7zhcAJ_-2ev&t=1154
'Algorithm' 카테고리의 다른 글
| [Python/코테] 백준 1629 곱셈 (0) | 2023.11.19 |
|---|---|
| [Python/코테] 백준 1074 Z (0) | 2023.11.18 |
| [Python/코테] 백준 2644 촌수 계산 | 무방향 그래프 구현하기 (0) | 2023.11.17 |
| [Python/코테] 백준 28471 W키가 빠진 성원이 (0) | 2023.11.14 |
| [Python/코테] 백준 4949 균형잡힌 세계 (0) | 2023.11.14 |
Comments