๐ ๋ฌธ์ ๋งํฌ
๐ ๋ฌธ์ ํ์ด
์ด๋ฆด ๋ ์์ฒญ ์ข์ํ๋ ์ถ์ต์ ํ๋ ธ์ด ํ ! !
ํ๋ ธ์ด ํ์ ์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ ํ ์ ์๋ ์ ๋ช ํ ์์ ์ค ํ๋๋ผ๊ณ ํ๋ค.
์ถ๋ ฅํด์ผ ํ๋ ๊ฐ์ ๋ ๊ฐ์ง์ด๋ค.
์ฒซ์งธ ์ค์ ์ฎ๊ธด ํ์ K, ๋ ๋ฒ์งธ ์ค๋ถํฐ ์ํ ๊ณผ์ ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
ํ๋ ธ์ด ์๋ฐ ์๊ฐ ํ์์ด๋ฉด ์ ์ผ ์์ ๋งจ ์ ์๋ฐ์ ๋งจ ์ค๋ฅธ์ชฝ ์ฅ๋์ ์ฎ๊ธฐ๋ฉด์ ์์ํ๊ณ , ์ง์์ด๋ฉด ์ค๊ฐ ์ฅ๋์ ์ฎ๊ธฐ๋ฉด์ ์์ํ ๊ธฐ์ต์ด ์์ด์ ๊ทธ๋ฐ ์์ผ๋ก ์ ๊ทผํ๋๋ฐ, ์ ํ ๊ด๊ณ์๋ ๋ฌด์๋ฏธํ ์ ๊ทผ์ด์๋ค ,,^^
์ํค๋ฐฑ๊ณผ์ ๋ณด๋ฉด ํ๋ ธ์ด ํ ์๊ณ ๋ฆฌ์ฆ์ด ์ค๋ช ๋์ด์๋ค.
ํ๋ ธ์ด์ ํ - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์
์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . ํ๋ ธ์ด์ ํ(Tower of Hanoi)์ ํผ์ฆ์ ์ผ์ข ์ด๋ค. ์ธ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ด ๊ธฐ๋ฅ์ ๊ฝ์ ์ ์๋ ํฌ๊ธฐ๊ฐ ๋ค์ํ ์ํ๋ค์ด ์๊ณ , ํผ์ฆ์ ์์ํ๊ธฐ ์ ์๋ ํ ๊ธฐ๋ฅ์ ์ํ๋ค
ko.wikipedia.org
์ํ์ด n๊ฐ ์ผ ๋, ์ฎ๊ธด ํ์๋ " 2์ n์ ๊ณฑ - 1 " ์ด๋ค.
์ด๋ฌํ ์๋ฅผ ๋ฉ๋ฅด์ผ ์(Mersenne number)๋ผ๊ณ ๋ถ๋ฅธ๋ค๊ณ ๋ ํ๋ค.
ํ๋ ธ์ด ํ์ ์ฎ๊ธฐ๋ ์ํ ๊ณผ์ ์ ์ฌ๊ท ํธ์ถ์ ํตํด ๊ตฌํํ ์ ์๋ค.
์ถ๋ ฅ์ StringBuilder๋ฅผ ํ์ฉํ์๋ค.
Key Point
๐์ฌ๊ท ํจ์๋ฅผ ํ์ฉํ๋ค.
Java ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static StringBuilder result = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// ์ฎ๊ธด ํ์
int movingCount = (int)Math.pow(2, N) - 1;
result.append(movingCount + "\n");
// ํ๋
ธ์ด ์๋ฐ์ ์ฎ๊ธฐ๋ ์ํ ๊ณผ์
moveHanoiDisk(N, 1, 2, 3);
System.out.print(result);
}
static void moveHanoiDisk(int N, int startingPoint, int mid, int destination) {
if (N == 1) {
result.append(startingPoint + " " + destination + "\n");
return;
}
moveHanoiDisk(N-1, startingPoint, destination, mid);
result.append(startingPoint + " " + destination + "\n");
moveHanoiDisk(N-1, mid, startingPoint, destination);
}
}
+
๋ญ๊ฐ 100% ์ดํดํ์ง ๋ชปํด์ ์ฐ์ฐํ๋๋ฐ, ์๊ธฐ ์ ์ ์ฐ์ฐํ ์ด ์์์ ๋ฐ๊ฒฌํ๋ค !
์ค๋ช ์ ๋๋ฌด ์ ํด์ฃผ์ ๋ค !
์ต๊ณ ๋ค !
'Algorithms > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 12865๋ฒ, ํ๋ฒํ ๋ฐฐ๋ญ : Java (4) | 2023.02.23 |
---|---|
๋ฐฑ์ค 9663๋ฒ, N-Queen : Java (0) | 2023.01.21 |
๋ฐฑ์ค 2447๋ฒ, ๋ณ ์ฐ๊ธฐ - 10 : Java (0) | 2022.12.27 |