import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer str = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(str.nextToken());
int M = Integer.parseInt(str.nextToken());
int[] arr = new int[N];
for (int x = 0; x < N; x++) { // arr[] = [1,2,3,4,5]
arr[x] = x + 1; //
}
for (int x = 0; x < M; x++) {
str = new StringTokenizer(br.readLine(), " ");
int i = Integer.parseInt(str.nextToken()); // 1
int j = Integer.parseInt(str.nextToken()); // 5
int[] arr2 = new int[N];
for (int y = 0; y < N; y++) { // 0부터
arr2[y] = arr[y];
}
for (int y = i - 1; y <= j; y++) {
int tmp[] = new int[j - i + 1];
tmp[j - y] = arr[y];
}
}
for (int x = 0; x < N; x++) {
System.out.print(arr[x] + " ");
}
}
}
위의 문제를 푸는데 있어 배열을 두개 생성하여 하나의 배열에 역순을 적용하여 적용된 배열을 다른 배열에 복사하는 방법을 사용하기위해서 코드를 구현하려 했다.
값을 입력받고 출력하는 부분은 코드를 구현하였으나, 역순으로 배열에 적용하는 부분에서 다소 어려움에 부딪혀, ChatGPT에 현재 풀고자 하는 문제와 내가 구성한 코드를 입력하여 풀이법의 피드백을 받았다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer str = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(str.nextToken());
int M = Integer.parseInt(str.nextToken());
int[] arr1 = new int[N];
for (int x = 0; x < N; x++) {
arr1[x] = x + 1;
}
for (int x = 0; x < M; x++) {
str = new StringTokenizer(br.readLine(), " ");
int i = Integer.parseInt(str.nextToken());
int j = Integer.parseInt(str.nextToken());
int[] arr2 = new int[N]; // 값을 복사해올 2번째 배열 생성
for (int y = 0; y < N; y++) {
arr2[y] = arr1[y]; // 현재 arr1의 값을 arr2로 복사해옴.
// (매 M번마다 반복해서 arr2배열을 arr1의 값으로 update해주기 위함.)
}
for (int y = i - 1; y < j; y++) { // 역순을 적용 할 i부터 j까지의 범위를 반복
arr2[y] = arr1[(i + j) - 2 - y];
}
/* [ex)i=1,j=4 (0부터 3까지 반복)]
* arr2[0] = arr1[3], arr2[1] = arr1[2],
* arr2[2] = arr1[1], arr2[3] = arr1[0]
*/
// arr2는 현재 역순으로 정렬이 완료된 상황.
arr1 = arr2; // arr1값에 arr2의 값을 대입함.
}
for (int x = 0; x < N; x++) {
System.out.print(arr1[x] + " ");
}