코린이의 소소한 공부노트

[백준 온라인 저지] 10812. 바구니 순서 바꾸기 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 10812. 바구니 순서 바꾸기

무지맘 2023. 3. 21. 12:42

도현이는 바구니는 총 N개 갖고 있고, 가장 왼쪽부터 1번 바구니이다.

- 입력: 첫째 줄에 N (1 N 100)M (1 M 100)이 주어진다. 둘째 줄부터 M개의 줄에는 바구니의 순서를 바꾸는 만드는 방법이 주어진다. 방법은 i, j, k로 나타내고, 왼쪽으로부터 i번째 바구니부터 j번째 바구니의 순서를 회전시키는데, 그 때 기준 바구니는 k번째 바구니라는 뜻이다. (1 i k j N) 예를 들어 1번부터 6번까지 바구니를 회전시키려고 하고, 기준이 3번이라면 1,2,3,4,5,63,4,5,6,1,2로 바뀌게 된다. 도현이는 입력으로 주어진 순서대로 바구니의 순서를 회전시킨다.

- 출력: 모든 순서를 회전시킨 다음에, 가장 왼쪽에 있는 바구니부터 바구니에 적혀있는 순서를 공백으로 구분해 출력한다.

import java.io.*;
class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] condition = br.readLine().split(" ");
        int n = Integer.valueOf(condition[0]), m = Integer.valueOf(condition[1]);
        int[] basket = new int[n];
        for(int i=0 ; i<n ; i++)
            basket[i] = i+1;
        while(m>0){
            String[] input = br.readLine().split(" ");
            int i = Integer.valueOf(input[0]), j = Integer.valueOf(input[1]), k = Integer.valueOf(input[2]);
            int[] tmp = new int[k-i];
            for(int a=i-1, b=0 ; a<k-1 ; a++, b++)
                tmp[b] = basket[a];
            for(int a=k-1, b=i-1 ; a<=j-1 ; a++, b++)
                basket[b] = basket[a];
            for(int a=i+j-k, b=0 ; b<tmp.length ; a++, b++)
                basket[a] = tmp[b];
            m--;
        }
        for(int i=0; i<basket.length; i++)
            bw.write(basket[i] + " ");
        bw.flush();
        bw.close();
    }
}