안녕하세요. 오늘은 바구니의 순서를 바꿀 거예요.

문제

https://www.acmicpc.net/problem/10812

아이디어

새로운 배열 brr을 만들어서 연산을 합시다.
brr[i]=arr[식] 꼴로 하면 많이 힘들어지므로 brr[식]=arr[i]라고 둡시다.
그러면 i가 속한 범위에 따라서 나뉘어 지는데 자세한건 코드로 보시면 됩니다. (ㅎㅎ;; ㅈㅅ.. ㅋㅋ!!)

소스코드

#include <iostream>
using namespace std;

int arr[101] = { 0 }, N;
void change(int s, int e, int mid)
{
    int brr[101] = { 0 };

    for (int i = 1; i <= N; i++)
    {
        if (i < s || e < i) brr[i] = arr[i];
        else
        {
            if (i < mid) brr[i + e - mid + 1] = arr[i];
            else brr[i - mid + s] = arr[i];
        }
    }
    for (int i = 1; i <= N; i++)
        arr[i] = brr[i];
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int M, i, a, b, c;
    cin >> N >> M;
    for (i = 1; i <= N; i++) arr[i] = i;

    for (i = 0; i < M; i++)
    {
        cin >> a >> b >> c;
        change(a, b, c);
    }

    for (i = 1; i <= N; i++) cout << arr[i] << ' ';
}


감사합니다.

0개의 댓글