💻 문제


일단 이해하자🤔
- 1부터 N까지의 바구니에 각각의 수를 넣고 i부터 j까지 바구니를 역순으로 M번 정렬한다.
- 바구니
arr를 만들고 i와 j를 입력 받는다. 예를 들어 1, 2, 3, 4를 역순 정렬할때 1과 4를 바꾸고 2와 3을 바꾸면 된다. 즉, i와 j를 바꾸고 i + 1과 j - 1를 바꾸고.. 이를 계속 반복하도록 로직을 짰다. 그래서 ss를 i부터 (j - i) / 2 + i로 설정 했고 tmp를 이용해서 순서대로 바꿔준다.
👀 풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
String str = bfr.readLine();
st = new StringTokenizer(str, " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int arr[] = new int[N + 1];
int i, j, tmp = 0;
for(int s = 1; s <= N; s++) {
arr[s] = s;
}
for(int s = 0; s < M; s++) {
String as = bfr.readLine();
StringTokenizer stt = new StringTokenizer(as, " ");
i = Integer.parseInt(stt.nextToken());
j = Integer.parseInt(stt.nextToken());
for(int ss = i; ss <= (j - i) / 2 + i; ss++) {
tmp = arr[ss];
arr[ss] = arr[j - ss + i];
arr[j - ss + i] = tmp;
}
}
for(int s = 1; s <= N; s++) {
bfw.write(arr[s] + " ");
}
bfr.close();
bfw.flush();
bfw.close();
}
}
💡 결과

아쉬웠던 점••
ss의 범위를 i부터 어디까지로 설정해야 할지 모르겠어서 문제 푸는데 오래걸렸다. 예제의 문제를 하나하나 대입하며 생각해보니 풀려서 로직이 생각나지 않을때에는 예제를 활용하는 것도 좋은 것 같다.