[백준/BOJ] 백준 10804번 : 카드 역배치

2020. 8. 2. 16:05알고리즘 문제풀이

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

 

10804번: 카드 역배치

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

www.acmicpc.net

1~20까지 숫자를 오름차순으로 저장하고, start_point와 end_point를 통해 구간을 입력받아 reverse(card.begin()+start_point-1, card.begin()+end_point)를 이용해 해당 구간을 역순으로 배치한다.

 

코드

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

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int start_point, end_point;
	vector<int> card;

	//1~20까지 숫자를 오름차순으로 저장한다
	for (int i = 1; i <= 20; i++)
	{
		card.push_back(i);
	}

	for (int i = 0; i < 10; i++)
	{
		cin >> start_point >> end_point;

		//입력한 구간을 reverse를 이용해 역순으로 배치한다
		reverse(card.begin() + start_point - 1, card.begin() + end_point);
	}

	for (int i = 0; i < 20; i++)
	{
		cout << card[i] << " ";
	}

	return 0;
}