Skip to content

Commit 2a1cf16

Browse files
committed
[Bronze II] Title: 바구니 순서 바꾸기, Time: 152 ms, Memory: 15948 KB -BaekjoonHub
1 parent f1749ee commit 2a1cf16

4 files changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# [Bronze II] 바구니 순서 바꾸기 - 10812
2+
3+
[문제 링크](https://www.acmicpc.net/problem/10812)
4+
5+
### 성능 요약
6+
7+
메모리: 15948 KB, 시간: 152 ms
8+
9+
### 분류
10+
11+
구현, 시뮬레이션
12+
13+
### 제출 일자
14+
15+
2023년 2월 22일 23:53:22
16+
17+
### 문제 설명
18+
19+
<p>도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다. </p>
20+
21+
<p>도현이는 앞으로 M번 바구니의 순서를 회전시키려고 만들려고 한다. 도현이는 바구니의 순서를 회전시킬 때, 순서를 회전시킬 범위를 정하고, 그 범위 안에서 기준이 될 바구니를 선택한다. 도현이가 선택한 바구니의 범위가 begin, end이고, 기준이 되는 바구니를 mid라고 했을 때, begin, begin+1, ..., mid-1, mid, mid+1, ..., end-1, end 순서로 되어있는 바구니의 순서를 mid, mid+1, ..., end-1, end, begin, begin+1, ..., mid-1로 바꾸게 된다.</p>
22+
23+
<p>바구니의 순서를 어떻게 회전시킬지 주어졌을 때, M번 바구니의 순서를 회전시킨 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.</p>
24+
25+
### 입력
26+
27+
<p>첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.</p>
28+
29+
<p>둘째 줄부터 M개의 줄에는 바구니의 순서를 바꾸는 만드는 방법이 주어진다. 방법은 i, j, k로 나타내고, 왼쪽으로부터 i번째 바구니부터 j번째 바구니의 순서를 회전시키는데, 그 때 기준 바구니는 k번째 바구니라는 뜻이다. (1 ≤ i ≤ k ≤ j ≤ N)</p>
30+
31+
<p>도현이는 입력으로 주어진 순서대로 바구니의 순서를 회전시킨다.</p>
32+
33+
### 출력
34+
35+
<p>모든 순서를 회전시킨 다음에, 가장 왼쪽에 있는 바구니부터 바구니에 적혀있는 순서를 공백으로 구분해 출력한다.</p>
36+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
10 5
2+
1 6 4
3+
3 9 8
4+
2 10 5
5+
1 3 3
6+
2 6 2
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1 4 6 2 3 7 10 5 8 9
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
import java.io.*;
3+
import java.util.ArrayList;
4+
import java.util.StringTokenizer;
5+
6+
public class Main {
7+
public static void main(String[] args) throws IOException {
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
StringTokenizer st = new StringTokenizer(br.readLine());
10+
int N = Integer.parseInt(st.nextToken());
11+
int M = Integer.parseInt(st.nextToken());
12+
int[] bucket = new int[N];
13+
for (int i = 0; i < bucket.length; i++) {
14+
bucket[i] = (i + 1);
15+
}
16+
for (int i = 0; i < M; i++) {
17+
st = new StringTokenizer(br.readLine());
18+
int a = Integer.parseInt(st.nextToken()) - 1;
19+
int b = Integer.parseInt(st.nextToken()) - 1;
20+
int mid = Integer.parseInt(st.nextToken()) - 1;
21+
ArrayList<Integer> temp = new ArrayList<>();
22+
for (int j = a; j <=b; j++) {
23+
if (j < mid) temp.add(bucket[j]);
24+
else {
25+
bucket[j - mid +a] = bucket[j];
26+
}
27+
}
28+
for (int j = 0; j < temp.size(); j++) {
29+
bucket[b -mid+a+1 +j] = temp.get(j);
30+
}
31+
}
32+
for (int i = 0; i <bucket.length ; i++) {
33+
System.out.print(bucket[i]+" ");
34+
}
35+
36+
}
37+
}
38+

0 commit comments

Comments
 (0)