PS
[C++] 카드 놓기 (백준 18115번)
jungh150c
2024. 9. 9. 01:25
https://www.acmicpc.net/problem/18115
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
vector<int> ac(n);
for (int i = 0; i < n; i++) cin >> ac[i];
deque<int> dq;
for (int i = n - 1; i >= 0; i--) {
if (ac[i] == 1) {
dq.push_front(n - i);
} else if (ac[i] == 2) {
int tmp = dq.front();
dq.pop_front();
dq.push_front(n - i);
dq.push_front(tmp);
} else if (ac[i] == 3) {
dq.push_back(n - i);
}
}
for (int i = 0; i < n; i++) {
cout << dq.front() << ' ';
dq.pop_front();
}
cout << '\n';
}
행동들을 뒤에서부터 읽으면서 1번이면 해당 카드를 덱의 맨 앞에 넣고, 2번이면 덱의 맨 앞에 있는 카드를 뻰 다음 해당 카드를 덱의 맨 앞에 넣고 원래 있었던 카드를 다시 맨 앞에 넣고, 3번이면 해당 카드를 덱의 맨 뒤에 넣는다. (AC)