
생각
이전에 공 바꾸기에서는 두 개의 값만 스왑하면 됐는데, 이번에는 바구니의 구간을 역순으로 정렬해야 한다.
1. 두 구간을 입력받는다
2. 빈 배열에 구간의 뒷부분부터 값을 할당한다.
3. 빈 배열의 값을 그대로 원래 배열에 넣어준다.
#include <iostream>
using namespace std;
int main() {
int arr[105];
for(int i=0; i<106; i++){
arr[i] = i;
}
int n, m;
cin >> n >> m;
int a, b, c, temp[105];
for(int i=1; i<=m; i++){
cin >> a >> b;
c = 1;
for(int j=b; j>=a; j--){
temp[c] = arr[j];
c++;
}
c = 1;
for(int j=a; j<=b; j++){
arr[j] = temp[c];
c++;
}
c = 1;
}
for(int i=1; i<=n; i++){
cout << arr[i] << " ";
}
return 0;
}
temp배열의 index를 임의로 도입하면서 코드가 좀 난잡해졌다. temp 배열 인덱스를 건들 수 있는 다른 방법이 있을 것 같은데.. 일단 답지 참조 없이 고민 좀 더 해 보다가 생각나면 수정하겠다.
도식화

역순으로 넣어서 평순으로 꺼내오면 된다!
'공부기록 > [Algorithm]' 카테고리의 다른 글
| 백준 1152번 <단어의 개수> - C++ (0) | 2024.08.03 |
|---|---|
| 백준 2675번 <문자열 반복> - C++ (3) | 2024.08.03 |
| 백준 10810번 <공 넣기> - C++ (0) | 2024.08.02 |
| 백준 10951번 <A+B - 4> - C++ (0) | 2024.08.02 |
| 백준 2884번 <알람 시계> - C++ (1) | 2024.08.01 |