풀이
이전에 학교를 다니면서 풀어보았던 문제이기에 덤벼 들었다. 위의 문제는 일반적인 점화식을 찾는것이 중요하면 규칙을 찾는것 또한 중요하다. 재귀함수의 규칙이라고 해서 어려운것이 아니다 그냥 가장 작은 문제로 줄여가면서 규칙을 찾아야 한다. 예전에 보았던 문제라도 다시 보고 또 봐야겠다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "");
int N = Integer.parseInt(st.nextToken());
bw.write((int) Math.pow(2, N) - 1 + "\n");
Hanoi(N, 1, 2, 3);
bw.flush();
bw.close();
}
public static void Hanoi(int n, int start, int mid, int to) throws IOException{
//하나 일때 이동
if (n == 1) {
bw.write(start + " " + to + "\n");
return;
}
//step 1 n-1 A->B이동
Hanoi(n-1, start, to, mid);
//step 2 1개이동 A->C이동
bw.write(start + " " + to + "\n");
//step 3 n-1 이동 B->C이동
Hanoi(n-1, mid, start, to);
}
}
'백준' 카테고리의 다른 글
[백준] 6603 로또 (JAVA) (0) | 2021.08.25 |
---|---|
DFS, BFS 복습(스택과 큐) (0) | 2021.08.22 |
[백준] 1931 회의실 배정 (JAVA) (0) | 2021.08.21 |
[백준] 11053 가장 긴 증가하는 부분수열 (JAVA) (0) | 2021.08.20 |
[백준] 1012 유기농배추(JAVA) (0) | 2021.08.20 |