728x90
https://www.acmicpc.net/problem/10812
10812번: 바구니 순서 바꾸기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
처음엔, while 반복문으로 tmp 배열을 복사해서 하나하나 옮겨줬는데 시간 초과 발생..!!
rotate 함수를 사용하면 된다.
begin에서 end를 mid 기준으로 회전하는 함수인데, 맨 앞에 있는 원소는 맨 뒤로 이동하고 +1을 할수록 원소가 좌측으로 이동한다.
#include <iostream>
#include <algorithm>
#define MAX 101
using namespace std;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n, m, arr[MAX];
cin >> n >> m;
for(int i=1; i<=n; i++) arr[i] = i;
while(m--){
int begin, end, mid;
cin >> begin >> end >> mid;
rotate(arr+begin, arr+mid, arr+end+1);
}
for(int i=1; i<=n; i++) cout << arr[i] << ' ';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 1406번: 에디터 (0) | 2022.05.12 |
---|---|
[백준/c++] 10799번: 쇠막대기 (0) | 2022.05.12 |
[백준/c++] 16926번: 배열 돌리기 1 (0) | 2022.05.11 |
[백준/c++] 2776번: 암기왕 (0) | 2022.05.03 |
[백준/c++] 2573번: 빙산 (0) | 2022.05.02 |