반응형
SMALL
문제 정보
문제명 - 바구니 순서 바꾸기
난이도 - 브론즈 II
문제 번호 - 10812번
문제 링크
https://www.acmicpc.net/problem/10812
10812번: 바구니 순서 바꾸기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
문제
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다.
도현이는 앞으로 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로 바꾸게 된다.
바구니의 순서를 어떻게 회전시킬지 주어졌을 때, M번 바구니의 순서를 회전시킨 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
둘째 줄부터 M개의 줄에는 바구니의 순서를 바꾸는 만드는 방법이 주어진다. 방법은 i, j, k로 나타내고, 왼쪽으로부터 i번째 바구니부터 j번째 바구니의 순서를 회전시키는데, 그 때 기준 바구니는 k번째 바구니라는 뜻이다. (1 ≤ i ≤ k ≤ j ≤ N)
도현이는 입력으로 주어진 순서대로 바구니의 순서를 회전시킨다.
출력
모든 순서를 회전시킨 다음에, 가장 왼쪽에 있는 바구니부터 바구니에 적혀있는 순서를 공백으로 구분해 출력한다.
예제 입력/출력
예제 입력 예제 출력 10 5 1 6 4 3 9 8 2 10 5 1 3 3 2 6 2
1 4 6 2 3 7 10 5 8 9
알고리즘 분류
● 구현
● 시뮬레이션
소스코드
package Lv1_Bronze;
import java.io.*;
import java.util.*;
/**
* @author HanHoon
* @category 구현, 시뮬레이션
* https://www.acmicpc.net/problem/10812
*/
public class BOJ_B2_10812_바구니_순서_바꾸기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = st = new StringTokenizer(br.readLine());
StringBuilder str = new StringBuilder();
// N: N개의 바구니
int N = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for (int i = 0; i < N; i++)
arr[i] = i + 1;
// M: 바구니의 순서를 바꾸는 방법
int M = Integer.parseInt(st.nextToken());
for (int m = 0; m < M; m++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken())-1;
int j = Integer.parseInt(st.nextToken())-1;
int k = Integer.parseInt(st.nextToken())-1;
int[] tmp = new int[j-i+1];
int tmpI = i;
for(int l = 0; l < j-i+1; l++){
if(k+l <= j)
tmp[l] = arr[k+l];
else {
tmp[l] = arr[tmpI];
tmpI++;
}
}
for(int l = i; l <= j; l++)
arr[l] = tmp[l-i];
}
for(int num : arr)
str.append(num).append(" ");
System.out.print(str);
br.close();
}
}
BaekJoon List
BaekJoon List
BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V - ● Bronze IV - ● Bronze III -..
han-hoon.tistory.com
기회는 준비된 자에게 찾아온다.

반응형
LIST
'BaekJoon > Bronze' 카테고리의 다른 글
[BOJ/JAVA] 백준 2903 : 중앙 이동 알고리즘 (자바) (0) | 2023.04.18 |
---|---|
[BOJ/JAVA] 백준 10988 : 팰린드롬인지 확인하기 (자바) (0) | 2023.04.15 |
[BOJ/JAVA] 백준 5086 : 배수와 약수 (자바) (0) | 2023.03.31 |
[BOJ/JAVA] 백준 24267 : 알고리즘 수업 - 알고리즘의 수행 시간 6 (자바) (0) | 2023.03.29 |
[BOJ/JAVA] 백준 24266 : 알고리즘 수업 - 알고리즘의 수행 시간 5 (자바) (0) | 2023.03.29 |
댓글