백준

백준 11729 - Java

으엉어엉 2024. 9. 14. 21:01
728x90

 

아래처럼 풀었더니 1sec , 430 msec 가 떠서 런타임 오류가 발생하였다. 그래서 StringBuild로 풀기로 하였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Hanoi {
    static int count = 0;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        System.out.println((int) (Math.pow(2, N) - 1));
        MoveToTower(N, 1, 3, 2);
    }
    static void MoveToTower(int N, int start, int end, int mid) {
        if (N == 1) {
            System.out.println(start + " " + end);
            return;
        }

        // 원판 N-1개를 중간 기둥으로 이동
        MoveToTower(N - 1, start, mid, end);

        // N번째 원판을 목표 기둥으로 이동
        System.out.println(start + " " + end);

        // 중간 기둥에 있던 N-1개 원판을 목표 기둥으로 이동
        MoveToTower(N - 1, mid, end, start);
    }
}

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Hanoi {

    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        // 전체 이동 횟수 출력 (2^N - 1)
        sb.append((int) (Math.pow(2, N) - 1)).append('\n');

        MoveToTower(N, 1, 3, 2);
        System.out.println(sb.toString());
    }

    static void MoveToTower(int N, int start, int end, int mid) {
        if (N == 1) {
            sb.append(start).append(" ").append(end).append('\n');
            return;
        }

        // 원판 N-1개를 중간 기둥으로 이동
        MoveToTower(N - 1, start, mid, end);

        // N번째 원판을 목표 기둥으로 이동
        sb.append(start).append(" ").append(end).append('\n');

        // 중간 기둥에 있던 N-1개 원판을 목표 기둥으로 이동
        MoveToTower(N - 1, mid, end, start);
    }
}
728x90

'백준' 카테고리의 다른 글

백준 10799 - Java  (0) 2024.09.15
백준 17413 - Java  (0) 2024.09.15
백준 2447 - Java  (0) 2024.09.14
백준 10870 - Java  (0) 2024.09.14
백준 27433 - Java  (0) 2024.09.14