BOJ

C++ [BOJ] 백준 10804번 카드 역배치

coco_ball 2022. 6. 21. 00:01

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

 

10804번: 카드 역배치

1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. 

www.acmicpc.net


SOLUTION

구간이 나올 때 마다 역순으로 벡터에 저장하여 벡터에 저장한 값들을 다시 arr 배열에 저장하면 순서가 바뀌게 된다.


코드

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int arr[21];
	for (int i = 0;i < 21;i++) {
		arr[i] = i;
	}
	for (int i = 0;i < 10;i++) {
		int x, y;
		cin >> x >> y;
		vector<int>tmp;
		for (int i = y;i >= x;i--) {
			tmp.push_back(arr[i]);
		}
		for (int i = x;i <= y;i++) {
			arr[i] = tmp[i - x];
		}
	}
	for (int i = 1;i < 21;i++) {
		cout << arr[i] << ' ';
	}
}