💻 문제


일단 이해하자🤔
- 정말 오래걸렸던 문제다. 문제는 이해했지만 도저히 로직을 어떻게 짜야할지 모르겠어서 다른 문제를 먼저 풀면서 미뤘던🙄 문제인데 처음 접근법이 잘못됐던 것 같다. 처음에는 M번 i, j, k를 받고 그 안의 for문에서 i부터 j까지 돌렸는데 이렇게하면 바구니의 인덱스 부분이 매우 복잡해졌다.
- 그래서 차라리
j - i + 1번 돌리고 그 인덱스를 따로 지정해주려고 했는데 이렇게 푸니 생각보다 쉽게 풀렸다! 나는 basket과 똑같은 배열인 newBasket을 생성해서 바뀐 위치를 넣어주고 basket을 다시 newBasket과 같도록 값을 갱신해줬다.
👀 풀이
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));
String str = bfr.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int basket[] = new int[N + 1];
int newBasket[] = new int[N + 1];
for (int s = 1; s <= N; s++) {
basket[s] = s;
newBasket[s] = s;
}
String method;
StringTokenizer stt;
int i, j, k;
for (int s = 0; s < M; s++) {
method = bfr.readLine();
stt = new StringTokenizer(method);
i = Integer.parseInt(stt.nextToken());
j = Integer.parseInt(stt.nextToken());
k = Integer.parseInt(stt.nextToken());
int ii = i;
for (int g = 0; g < j - i + 1; g++) {
if (k + g <= j) {
newBasket[g + i] = basket[k + g];
} else {
newBasket[g + i] = basket[ii];
ii++;
}
}
for (int g = 1; g <= N; g++) {
basket[g] = newBasket[g];
}
}
for (int s = 1; s <= N; s++) {
bfw.write(newBasket[s] + " ");
}
bfr.close();
bfw.flush();
bfw.close();
}
}
💡 결과

아쉬웠던 점••
- 굉장히 어려운 문제라고 생각했고 이 문제가 왜
브론즈 2 레벨인지도 이해가 안됐었다😅 풀고나니 생각보다 간단한 문제였음을 깨달았고 문제가 잘 풀리지 않을때는 빠르게 다른 로직을 생각하는 것도 좋은 생각인 것 같다. 너는 왜 문제도 제대로 안 풀고 지레 겁을 먹니? ㅋㅋ