Programming/BOJ
[백준/BOJ] 18115 카드 놓기
he1fire
2020. 11. 20. 01:00
728x90
문제 : 18115 카드 놓기
18115번: 카드 놓기
수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다. 제일 위의 카드 1장을 바닥에 내려놓는다.
www.acmicpc.net
카드를 내려놓은 순서가 주어질 때,
원래의 카드 순서를 복구하는 문제이다.
deque 자료형을 이용해 앞뒤로 집어넣은 후 출력하면 된다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N;
vector<ll> arr;
deque<ll> dq;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i=0;i<N;i++){
ll a;
cin >> a;
arr.push_back(a);
}
reverse(arr.begin(), arr.end());
for (int i=1;i<=N;i++){
if (arr[i-1]==1)
dq.push_front(i);
if (arr[i-1]==2){
ll a=dq.front();
dq.pop_front();
dq.push_front(i);
dq.push_front(a);
}
if (arr[i-1]==3)
dq.push_back(i);
}
while(!dq.empty()){
cout << dq.front() << " ";
dq.pop_front();
}
return 0;
}
728x90