๊ท์น
"๋ง์ฝ A,B,C ์ค์์ A์์ C๋ก ์๋ฐ์ด ์ด๋ํด์ผ ํ๋ค๋ฉด, ๊ฐ์ฅ ํฐ ์๋ฐ์ ์ ์ธํ ๋๋จธ์ง ์๋ฐ๋ค์ ์ฐ์ B๋ก ์ด๋ํด์ผํจ"
์ด๋ ํ ๊ฒฝ์ฐ๋ผ๋, ๊ฐ์ฅ ํฐ ์๋ฐ์ ์ ์ธํ ๋๋จธ์ง ์๋ฐ๋ค์ ๋ชฉ์ ์ง์ ์ถ๋ฐ์ง๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ถ์ ์์์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ์๋ฐ์ ๋ชฉ์ ์ง์ ๊ฐ์ ธ๋ค ๋์ ํ, ๋๋จธ์ง ์๋ฐ๋ค์ ๋ค์ ๋ชฉ์ ์ง๋ก ์ด๋์์ผ์ผ ํ๋ค.
๋ชฉ์ ์ง๋ก ์ด๋ํ ๋ ๋ํ, ์์ ๊ณต์์ด ์ด๋ค์ ธ์ผ ํ๋ค.
"๋ง์ฝ ์ถ๋ฐ ์ถ์ 1, ๋ชฉ์ ์ง ์ถ์ 3์ด๋ผ๊ณ ํ๋ค๋ฉด ๋๋จธ์ง ์ถ 2๋ฅผ ๊ตฌํ๋ ๊ณต์์ (1+2+3) - (3+1) ์ด๋ค. "
์ฆ, ๋ชจ๋ ์๋ฐ์์ ์ถ๋ฐ ์ถ๊ณผ ๋ชฉ์ ์ง ์ถ์ ๋นผ๋ฉด ๋๋จธ์ง ์ถ์ด ๋์จ๋ค๋ ์๋ฏธ์ด๋ค.
ํ์ด
์ฌ๊ท ํจ์๋ก ํด๋น ๋ฌธ์ ๋ฅผ ํผ๋ค๋ฉด, ์ธ ๊ฐ์ง ํ๋ฆ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด ๋๋ค.
(1) ์ด ์๋ฐ์ ์๊ฐ n์ด๋ผ ํ์ ๋ ๊ฐ์ฅ ํฐ ์๋ฐ์ ์ ์ธํ ๋๋จธ์ง n-1๊ฐ์ ์๋ฐ์ ์ถ๋ฐ,๋ชฉ์ ์ง ์ถ์ ์ ์ธํ ๋๋จธ์ง ์ถ์ ๋ชจ๋ ์์์ผ ํ๋ค.
(2) ๊ฐ์ฅ ํฐ ์๋ฐ์ ๋ชฉ์ ์ง ์ถ์ผ๋ก ์ด๋์ํจ๋ค.
(3) ๋๋จธ์ง ์ถ์ ์์ฌ์ ธ ์๋ n-1๊ฐ์ ์๋ฐ๋ค์ ๋ชฉ์ ์ง ์ถ์ผ๋ก ๋ชจ๋ ์ด๋์ํจ๋ค.
"1,3๋ฒ ๊ณผ์ ์์ ๋น์ฐํ ์ธ ๊ฐ์ง ํ๋ฆ์ ๊ผญ ์ง์ผ์ผ ํ๋ค. ๋ฐ๋ผ์ ์ฌ๊ท ํธ์ถ๋ก ํด๊ฒฐํ๋ฉด ๋๋ค."
์ฝ๋
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
|
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class hanoiTower {
public static void hanoi(BufferedWriter bw,int a, int b,int count) throws IOException {
if(count == 1) {
return;
}
int goal = 6 - (a+b);
hanoi(bw,a,goal,count-1);
hanoi(bw,goal,b,count-1);
return;
}
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
hanoi(bw,1,3,count);
}
}
|