코딩테스트 풀이/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,6이 3,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();
}
}