본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 10811번: 바구니 뒤집기 [Java]

문제: https://www.acmicpc.net/problem/10811

 

10811번: 바구니 뒤집기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] arr = new int[sc.nextInt() + 1];
		for(int i = 0; i < arr.length; i++) arr[i] = i;
		int M = sc.nextInt();
		
		for(int i = 0; i < M; i++) {
			int start = sc.nextInt();
			int end = sc.nextInt();
			int[] temp = Arrays.copyOfRange(arr, start, end + 1);
			
			for(int j = start; j <= end; j++)
				arr[j] = temp[temp.length - 1 - j + start];
		}
		for(int i = 1; i < arr.length; i++)
			System.out.print(arr[i] + " ");
	}
}

2. 설명

임의의 배열을 바구니의 시작번호와 끝 번호만큼 부분을 복사하여 뒷부분부터 저장합니다.