해결방법
바구니를 회전할 때 새로운 배열을 만들어서 그 안에서 회전을 시키고 기존의 배열에 값을 대입하는 방식으로 해결한다.
정답 코드
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N, M, i, j, k;
cin >> N >> M;
vector<int> baskets(N + 1);
for (int i = 1; i <= N; i++)
{
baskets[i] = i;
}
for (int m = 0; m < M; m++)
{
cin >> i >> j >> k;
int idx = 0;
vector<int> temp(j - i + 1);
for (int x = i; x <= j; x++)
{
temp[x - i] = baskets[x];
}
for (int x = k; x <= j; x++)
{
baskets[i + idx] = temp[x - i];
idx++;
}
for (int x = i; x < k; x++)
{
baskets[i + idx] = temp[x - i];
idx++;
}
}
for (int i = 1; i <= N; i++)
{
cout << baskets[i] << " ";
}
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 17173 배수들의 합 (0) | 2024.10.14 |
---|---|
BOJ - 1934 최소공배수 (0) | 2024.10.07 |
BOJ - 1996 지뢰 찾기 (0) | 2024.10.01 |
BOJ - 18229 내가 살게, 아냐 내가 살게 (0) | 2024.09.30 |
BOJ - 1978 소수 찾기 (0) | 2024.09.26 |