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
- softeer
- 자바스크립트
- Java
- Lv. 2
- bfs
- group by
- C언어
- 깊이 우선 탐색
- javascript
- 동적계획법
- Lv. 0
- LEVEL 2
- Lv. 1
- 너비 우선 탐색
- SQL
- 티스토리챌린지
- select
- 파이썬
- Python
- programmers
- Dynamic Programming
- 프로그래머스
- 소프티어
- SQL 고득점 KIT
- join
- 오블완
- dfs
- Lv. 3
- DP
- level 3
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 [Lv. 2] 하노이의 탑 {언어 : JavaScript} 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12946
정답 코드
function solution(n) {
const answer = [];
const hanoiT = (number, fromT, toT, assistT) => {
if (number == 1) {
answer.push([fromT, toT])
return
}
hanoiT(number-1, fromT, assistT, toT)
answer.push([fromT, toT])
hanoiT(number-1, assistT, toT, fromT)
}
hanoiT(n, 1, 3, 2)
return answer;
}
풀이 방법
- 함수를 만든다.
- fromT가 처음 탑이 쌓여있는 곳이자 옮기고 싶은 탑
- toT가 이제 쌓을 탑이자 옮길 최종 탑
- assistT가 처음 탑에서 옮길 탑으로 돌을 옮길 때 도와줄 탑
- 즉, 최종으로 fromT에서 toT으로 옮길 때 assistT을 이용한다는 의미
- number를 1을 줄여서 돌 하나를 옮겼다고 계산한다.
- fromT에서 assistT으로 돌을 옮기는데 여기서 toT을 이용한다.
- 실행 과정을 살펴보면
function solution(n) {
const answer = [];
const hanoiT = (number, fromT, toT, assistT) => {
console.log("start", number)
if (number == 1) {
console.log("final", number, fromT, toT)
answer.push([fromT, toT])
return
}
hanoiT(number-1, fromT, assistT, toT)
console.log("next", number, fromT, toT)
answer.push([fromT, toT])
hanoiT(number-1, assistT, toT, fromT)
}
hanoiT(n, 1, 3, 2)
return answer;
}
n이 3일 경우 [[1, 3], [1, 2], [3, 2], [1, 3], [2, 1], [2, 3], [1, 3]] start 3 start 2 start 1 final 1 1 3 next 2 1 2 start 1 final 1 3 2 next 3 1 3 start 2 start 1 final 1 2 1 next 2 2 3 start 1 final 1 1 3 start가 함수가 실행되는 시점이다. |
느낀점
- 하노이의 탑은 여전히 어렵다.
- 계속해서 다시 풀어보는 방법 밖에는 없는 것 같다.
'알고리즘' 카테고리의 다른 글
백준 GOLD 3 [20057번] 마법사 상어와 토네이도 {언어 : Python} (1) | 2024.02.26 |
---|---|
프로그래머스 [Lv. 1] 신규 아이디 추천 {언어 : JavaScript} (0) | 2024.02.22 |
프로그래머스 [Lv. 2] 모음 사전 {언어 : Python} (0) | 2024.02.19 |
Softeer Level 2 X marks the Spot {언어 : JavaScript} (0) | 2024.02.13 |
Softeer Level 2 X marks the Spot {언어 : Python} (0) | 2024.02.13 |