Computer Science/백준
백준 11729번 하노이의 탑 이동 순서
Dior2ky
2020. 2. 3. 18:20
반응형
백준 11729번 재귀로 유명한 하노이의 탑 문제이다.

문제는 다음과 같다. 일반적인 하노이의 탑 문제이다.

입력값과 출력값, 예제가 주어져 있다.
출력은 총 움직인 횟수를 먼저 출력하고 움직임을 하나씩 출력하도록 되어있다.
언어는 ruby를 사용하여 프로그래밍 하였다.
def move(n,st,en,si)
if n == 2
puts "%d %d" %[st, si]
puts "%d %d" %[st, en]
puts "%d %d" %[si, en]
return
end
move(n-1, st, si, en)
puts "%d %d" %[st, en]
move(n-1, si, en, st)
end
a = gets()
a = a.to_i
sum = 1
for i in 0...a-1
sum = sum * 2 + 1
end
puts sum
move(a, 1, 3, 2)
다음과 같이 재귀를 사용하여 프로그래밍 했지만 계속해서 런타임 오류가 발생했다.
문제가 무엇인지 몰라 5번을 런타임오류를 띄웠다. ㅎ
문제를 알고보니 입력값 조건을 제대로 보지 않았다.
입력값 1 에 대한 처리를 해주지 않았던 것!
def move(n,st,en,si)
if n == 1
puts "%d %d" %[st, en]
return
elsif n == 2
puts "%d %d" %[st, si]
puts "%d %d" %[st, en]
puts "%d %d" %[si, en]
return
end
move(n-1, st, si, en)
puts "%d %d" %[st, en]
move(n-1, si, en, st)
end
a = gets()
a = a.to_i
sum = 1
for i in 0...a-1
sum = sum * 2 + 1
end
puts sum
move(a, 1, 3, 2)
다음과 같이 코드를 수정해 주었고 맞았습니다 !! 를 띄울 수 있었다.

반응형