728x90

https://www.acmicpc.net/problem/11729

 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net

 

 

 

풀이)

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

public class Main_BJ_11729_하노이탑이동순서 {
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        sb.append((int)(Math.pow(2,n)-1)+"\n");
        moving(n, 1, 2, 3);
        System.out.println(sb);
    }//main
    private static void moving(int n, int start, int mid, int to){
        if(n == 1){
            sb.append(start+" "+to+"\n");
            return;
        }

        moving(n-1, start, to, mid);
        sb.append(start+" "+to+"\n");
        moving(n-1, mid, start, to);
    }//moving
}

재귀를 안다면 나름 간단하게 풀 수 있다.

대신, 하노이의 탑 규칙을 알아야 한다!

그리고, 시간 초과가 나올 수 있으므로 stringbuilder 사용해주면 간편!

728x90

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

백준 1912 연속합(JAVA)  (0) 2023.06.03
백준 15651 N과 M(3) (JAVA)  (0) 2023.05.31
백준 14889 스타트와 링크(JAVA)  (0) 2023.05.23
백준 4963 섬의 개수(JAVA)  (0) 2023.05.21
백준 15649 N과 M(1) (JAVA)  (1) 2023.05.16

+ Recent posts