https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int N, temp;
stack<int> st;
vector<int> num;
vector<char> ret;
int nidx = 0, ridx = 0;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> temp;
num.push_back(temp);
}
for (int i = 1; i <= N; i++) {
st.push(i);
ret.push_back('+');
while (!st.empty() && st.top() == num[nidx]) {
st.pop();
ret.push_back('-');
nidx++;
}
}
if (!st.empty()) cout << "NO";
else {
while (ridx < ret.size()) {
cout << ret[ridx++] << '\n';
}
}
}
'알고리즘' 카테고리의 다른 글
[boj9934/c++] 완전 이진 트리 (0) | 2023.05.01 |
---|---|
[boj1389/c++] 케빈 베이컨의 6단계 법칙 (0) | 2023.05.01 |
[boj 1753/c++] 최단경로 (0) | 2023.04.27 |
[boj 9465/c++] 스티커(동적계획법, dp) (0) | 2022.08.07 |
[boj 1012, 2606, 7576/C++] 유기농 배추, 바이러스, 토마토(bfs와 dfs) (0) | 2022.07.17 |