n 길이의 배열을 각 인덱스로 초기화한 다음 m번동안 i번째부터~j번째까지를 뒤집어주면 된다.

이때 reverse 함수를 활용하여 풀 수 있다.

 

reverse함수는 시작과 끝을 정해주면 그 구간을 뒤집어 준다.

 

정답코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int main()
{
    int n, m;
    cin >> n >> m;
    
    vector<int> v(n);

    for (int i = 0;i < n;i++)
    {
        v[i] = i + 1;
    }

    for (int x = 0;x < m;x++)
    {
        int i, j;
        cin >> i >> j;
        reverse(v.begin() + i - 1, v.begin() + j);
    }
    
    for (int it : v)
    {
        cout << it << " ";
    }

    return 0;
}

+ Recent posts