알고리즘

C++ 알고리즘 - 18115 카드 놓기

마루설아 2025. 1. 24. 08:57

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

 

#include <bits/stdc++.h>
#define endl "\n"

using namespace std;

/******** 전역변수 ********/


/******** 함    수 ********/


int main(void) {
	/******** C++ INIT ********/
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);


	/******** 지역변수 ********/
	int input1;
	int input2;
	int num;

	deque<int> card;
	stack<int> select;


	/******** 구    현 ********/
	cin >> input1;

	// 카드를 뽑을 순서를 스택에 추가
	for (int i = 1; i <= input1; i++) {
		cin >> input2;
		select.push(input2);
	}

	// 카드를 뽑을 순서를 역순으로 가져온다
	for (int i = 1; i <= input1; i++) {
		num = select.top();
		select.pop();

		// 1이라면 맨 앞에 추가
		if (num == 1) {
			card.push_front(i);
		}

		// 2라면 맨 앞에서 두번째에 추가
		else if (num == 2) {
			card.insert(card.begin() + 1, i);
		}

		// 3이라면 맨 뒤에 추가
		else if (num == 3) {
			card.push_back(i);
		}
	}

	// 카드 출력
	for (int i = 0; i < card.size(); i++) {
		cout << card[i] << " ";
	}
}

 

 

 

풀었더니 배경을 얻었다.