[C++, Golang] 11729๋ฒ: ํ๋ ธ์ด ํ ์ด๋ ์์
ํด๋น ๊ธ์ ๋ด์ฉ์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ๊ธ์ด์ด์ ์ฃผ๊ด์ ์ธ ํ์ด์ ๋๋ค. ๋ ์ข์ ํ์ด๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค(__)
๋งํฌ
https://www.acmicpc.net/problem/11729
๋ฌธ์ ์ค๋ช
์ธ ๊ฐ์ ์ฅ๋๊ฐ ์๊ณ ์ฒซ ๋ฒ์งธ ์ฅ๋์๋ ๋ฐ๊ฒฝ์ด ์๋ก ๋ค๋ฅธ n๊ฐ์ ์ํ์ด ์์ฌ ์๋ค. ๊ฐ ์ํ์ ๋ฐ๊ฒฝ์ด ํฐ ์์๋๋ก ์์ฌ์๋ค. ์ด์ ์๋์น๋ค์ด ๋ค์ ๊ท์น์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ ์ฅ๋์์ ์ธ ๋ฒ์งธ ์ฅ๋๋ก ์ฎ๊ธฐ๋ ค ํ๋ค.
- ํ ๋ฒ์ ํ ๊ฐ์ ์ํ๋ง์ ๋ค๋ฅธ ํ์ผ๋ก ์ฎ๊ธธ ์ ์๋ค.
- ์์ ๋์ ์ํ์ ํญ์ ์์ ๊ฒ์ด ์๋์ ๊ฒ๋ณด๋ค ์์์ผ ํ๋ค.
์ด ์์ ์ ์ํํ๋๋ฐ ํ์ํ ์ด๋ ์์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋จ, ์ด๋ ํ์๋ ์ต์๊ฐ ๋์ด์ผ ํ๋ค.
์๋ ๊ทธ๋ฆผ์ ์ํ์ด 5๊ฐ์ธ ๊ฒฝ์ฐ์ ์์์ด๋ค.
์ ํ ์กฐ๊ฑด
์ ๋ ฅ: ์ฒซ์งธ ์ค์ ์ฒซ ๋ฒ์งธ ์ฅ๋์ ์์ธ ์ํ์ ๊ฐ์ N (1 ≤ N ≤ 20)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ: ์ฒซ์งธ ์ค์ ์ฎ๊ธด ํ์ K๋ฅผ ์ถ๋ ฅํ๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ ์ํ ๊ณผ์ ์ ์ถ๋ ฅํ๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ K๊ฐ์ ์ค์ ๊ฑธ์ณ ๋ ์ ์ A B๋ฅผ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ถ๋ ฅํ๋๋ฐ, ์ด๋ A๋ฒ์งธ ํ์ ๊ฐ์ฅ ์์ ์๋ ์ํ์ B๋ฒ์งธ ํ์ ๊ฐ์ฅ ์๋ก ์ฎ๊ธด๋ค๋ ๋ป์ด๋ค.
์ ์ถ๋ ฅ ์
<์ ๋ ฅ 1>
3
<์ถ๋ ฅ 1>
7
1 3
1 2
3 2
1 3
2 1
2 3
1 3
ํ์ด
[Golang]
package main
import (
"bufio"
"fmt"
"os"
)
var printBuf []string
var result int
func init () {
printBuf = make([]string, 0, 100000)
}
func hanoi(n, from, to, aux int) {
result++
if n == 1 {
printBuf = append(printBuf, fmt.Sprintf("%d %d", from, to))
return
}
hanoi(n-1, from, aux, to)
printBuf = append(printBuf, fmt.Sprintf("%d %d", from, to))
hanoi(n-1, aux, to, from)
}
func main() {
r := bufio.NewReader(os.Stdin)
var num int
_, _ = fmt.Fscanf(r, "%d\n", &num)
hanoi(num, 1, 3, 2)
fmt.Println(result)
for _, printResult := range printBuf {
fmt.Println(printResult)
}
}
[C++]
#include <iostream>
#include <vector>
using namespace std;
int result = 0;
vector<char> vec;
void hanoi(int n, char from, char to, char aux)
{
result++;
if (n == 1)
{
vec.push_back(from);
vec.push_back(' ');
vec.push_back(to);
vec.push_back('\n');
return;
}
hanoi(n - 1, from, aux, to);
vec.push_back(from);
vec.push_back(' ');
vec.push_back(to);
vec.push_back('\n');
hanoi(n - 1, aux, to, from);
}
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
int num;
cin >> num;
hanoi(num, '1', '3', '2');
cout << result << '\n';
for (char print : vec)
{
cout << print;
}
return 0;
}
ํ์ด ์ค๋ช
์ฌ๊ท ํจ์๋ฅผ ํ์ฉํ ๋ํ์ ์ธ ๋ฌธ์ ์ธ ํ๋ ธ์ด ํ ๋ฌธ์ ๋ค.
1. ์๋ฐ์ด ํ ๊ฐ์ผ ๋ ๊ทธ๋ฅ Destination์ ์ฎ๊ธฐ๋ฉด ๋๋ค.(์ข ๋ฃ ์กฐ๊ฑด).
2. ์๋ฐ์ด n๊ฐ์ผ ๋
2-1) Source์ n๊ฐ ์๋ฐ ์ค n-1๊ฐ๋ฅผ Auxiliary๋ก ์ ์ ์ฎ๊ธด๋ค.
2-2) Source์ ๋จ์์๋ ์๋ฐ์ Destination์ผ๋ก ์ฎ๊ธด๋ค.
2-3) Auxiliary์ ์๋ n-1๊ฐ์ ์๋ฐ์ Destination์ผ๋ก ์ฎ๊ธด๋ค.
'Algorithm > ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++, Golang] 2798๋ฒ: ๋ธ๋์ญ (0) | 2020.07.14 |
---|---|
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2020.07.10 |
[C++, Golang] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ (0) | 2020.07.08 |
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10 (0) | 2020.07.07 |
[Golang] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10 (0) | 2020.07.07 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++, Golang] 2798๋ฒ: ๋ธ๋์ญ
[C++, Golang] 2798๋ฒ: ๋ธ๋์ญ
2020.07.14 -
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
2020.07.10 -
[C++, Golang] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ
[C++, Golang] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ
2020.07.08 -
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
2020.07.07