[10811] Baek joon

배열 순서를 거꾸로 뒤집는 문제… 분명 학원 다닐 때 풀었던 문제같은데 까먹어서 기록해봄.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
// 바구니 배열 초기화
int[] baskets = new int[N];
for (int i = 0; i < N; i++) {
baskets[i] = i + 1;
}
// M번 순서를 역순으로 만듦
for (int m = 0; m < M; m++) {
int start = sc.nextInt() - 1;
int end = sc.nextInt() - 1;
// 범위의 중간을 기준으로 역순으로 바꿈
while (start < end) {
int temp = baskets[start];
baskets[start] = baskets[end];
baskets[end] = temp;
start++;
end--;
}
}
// 결과 출력
for (int i : baskets) {
System.out.print(i + " ");
}
}
}
범위의 중간을 기준으로 역순으로 바꾸는 이유는 만약, baskets라는 배열에 1, 2, 3, 4, 5라는 배열 값이 들어있을 때, arr[0] 과 arr[4] / arr[1]과 arr[3] 을 바꿔줘야 중간값인 3을 기준으로 순서가 뒤바뀌는 것이기 때문임. 이 중간값을 start++; 와 end–;를 이용해서 (start < end) 조건을 만족할 때로 찾아주면 됨.
처음 시도했을 때는 이 중간값에서 값바꾸는걸 멈춰야하는데 계속 바꿔줘서 값이 이상하게 나옴. 배열 순서를 뒤집는 문제는 중간값에 신경쓰자…