Baekjoon 1876 (스택 수열)

Baekjoon 1876 (스택 수열)

Baekjoon 1876, 백준 1876 문제의 본인 풀이입니다!
문제는 아래의 링크에서 확인할 수 있습니다.
문제보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <stack>
#include <vector>

using namespace std;

int main() {
int n, i, j, num, temp = 0;
stack<int> st;
vector<char> vec; // save the result (+,-)
vector<int> seq;
cin >> n;

// save the sequence in vector seq
for (i = 0; i < n; i++) {
cin >> j;
seq.push_back(j);
}

for (num = 1; num <= n; num++) {
st.push(num);
vec.push_back('+');

if (!st.empty() && st.top() == seq.at(temp)) {
do {
st.pop();
vec.push_back('-');
temp++;
} while (!st.empty() && st.top() == seq.at(temp));
}
}

if (!st.empty()) {
cout << "NO" << '\n';
return 0;
}

for (i = 0; i < vec.size(); i++) {
cout << vec.at(i) << '\n';
}
}

스택 단원의 마지막 문제.
시간 상 C++의 <stack>을 이용하여 풀었기 때문에,
크게 기억에 남는 것이 없는 단원이였다.
다음 단원부터는 다른 STL 헤더 없이 직접 구현해야겠다고 다짐함.

Author

Yeonsang Shin

Posted on

2020-07-03

Updated on

2022-12-19

Licensed under

Comments