[BOJ] 11729 ํ๋ ธ์ดํ ์ด๋ ์์
https://www.acmicpc.net/problem/11729
๋ฌธ์ ์ ๊ทผ
์ผ๋จ ํ๋
ธ์ด ํ์ 1์์ 2๋ฅผ ๊ฑฐ์ณ์(์ด์ฉํด์?) 3์ผ๋ก ์ฎ๊ฒจ์ผ ํ๋ค.
๋์ ์ง๊ด์ ์ธ? ์ ๊ทผ ๋ฐฉ์์ n์ด 3๊ฐ์ผ ๋,
1.์ฒซ ํจ์ ํธ์ถ๋ก 1 -> 3์ผ๋ก ๊ฐ์ฅ ์์ ๊ฒ์ ์ฎ๊ธด๋ค.
2.๊ทธ๋ฆฌ๊ณ ๋ค์ ํจ์ ํธ์ถ๋ก 1 -> 2๋ก ๋๋ฒ์งธ๋ก ์์ ๊ฒ์ ์ฎ๊ธด๋ค. (์ด๋ฌ๋ฉด ๊ฐ์ฅ ํฐ๊ฒ์ด 1์ ์๋ค!)
3.์ด๋๋ ํจ์ ํธ์ถ ํ์ง ์๊ณ 1 -> 3์ผ๋ก ์ฎ๊ธด๋ค. (์ด ๋ 3์ ์๋ ๊ฐ์ฅ ํฐ ๊ฒ์ ์ด์ ์๋ค๊ณ ์๊ฐํด๋ ๋๋ค!)
4.์ด์ ์ด ๋ฌธ์ ๋ 2๊ฐ์ ์๋ฐ์ ๊ฐ์ง ํ๋
ธ์ดํ์ 2 -> 3์ผ๋ก ์ฎ๊ธฐ๋ ๋ฌธ์ ๋ก ์์์ง๋ค. => ํจ์ ํธ์ถ๋ก 2->3์ผ๋ก ๋ค์ ์์ ๊ฒ์ ์ฎ๊ธด๋ค.
์ด ์ ๊ทผ์ ์ฌ๊ท์ ์ผ๋ก ์ ์ ๋ฆฌํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.
1.1 -> 3์ผ๋ก n๊ฐ๋ฅผ ์ฎ๊ธฐ๊ธฐ ์ํ ํจ์๋ฅผ ํธ์ถ ํ๋ค.
2.1 -> 2๋ก n-1๊ฐ๋ฅผ ์ฎ๊ธฐ๊ธฐ ์ํ ํจ์๋ฅผ ํธ์ถ ํ๋ค.
3.1 -> 3์ผ๋ก ๊ฐ์ฅ ํฐ ์๋ฐ์ ์ฎ๊ธด๋ค.
4.2->3 ์ผ๋ก n-1๊ฐ์ ์๋ฐ์ ์ฎ๊ธฐ๊ธฐ ์ํ ํจ์๋ฅผ ํธ์ถํ๋ค.
Code
import java.util.Scanner;
public class BOJ11729 {
static int cnt = 0;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
hanoi(n,1,3,2);
System.out.println(cnt);
System.out.println(sb);
}
public static void hanoi(int n, int from, int to, int by){
if(n == 1){
move(from, to);
} else {
hanoi(n-1,from,by,to);
move(from,to);
hanoi(n-1,by,to,from);
}
}
private static void move(int from, int to) {
sb.append(from + " " + to+"\n");
cnt++;
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
์์ ์ ํ๋ ธ์ด ํ์ ์ ํ์ ๋๋ ๋๊ฒ ์ด๋ ค์ ๋๋ฐ, ํ๋ ์ด ์ฌ๋ผ๊ฐ์ ๊ทธ๋ฐ๊ฐ ์ดํด๊ฐ ์ ๋๋๋๋์ด๋ค!
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][๋ฐฑ์ค] 1167 ํธ๋ฆฌ์ ์ง๋ฆ (0) | 2022.04.04 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 1967 ํธ๋ฆฌ์ ์ง๋ฆ (0) | 2022.04.04 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ (0) | 2022.03.27 |
[Algorithm/Java][๋ฐฑ์ค] 9020 ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2022.03.26 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋ฐ๋จน๊ธฐ (0) | 2022.03.24 |