
사진 출처 : https://www.acmicpc.net/

이번 문제는 바구니 갯수 입력 값과 시도 값을 입력 후 해당 적은 두 정수를 포함한 사이 값들을 역순으로 바꾸는 문제이다.
ex) 1 2 3 4 5 -> 사이 값 입력 2,4 -> 1 4 3 2 5
import java.util.*;
public class Array9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
list.add(i+1);
}
for (int i = 0; i < M; i++) {
int num1 = sc.nextInt();
int num2 = sc.nextInt();
Collections.reverse(list.subList((num1 - 1), num2));
}
for (int temp : list) {
System.out.print(temp + " ");
}
}
}
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
list.add(i+1);
}
바구니 개수(N)와 시도 횟수(M) 입력 받은 뒤 숫자 바꾸기 편하게 list로 선언해준다.
for (int i = 0; i < M; i++) {
int num1 = sc.nextInt();
int num2 = sc.nextInt();
Collections.reverse(list.subList((num1 - 1), num2));
}
for (int temp : list) {
System.out.print(temp + " ");
}
시도 횟수 까지 num1, num2 값을 받아 해당 값들 사이를 역순으로 만들어준다. 여기서 역순 만들 땐 Collections.reverse() 함수를 사용하면 역순을 만들 수 있다.
그리고 list.subList() 에서 num-1을 해줘야 해당 주소지에 정확한 값을 가져올 수 있다. 쓰지 않는 경우 한 칸 뒤에 있는 값을 가져올거다.
