알고리즘/백준

[백준/c++] 10812번: 바구니 순서 바꾸기

녕이 2022. 5. 11. 18:25
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