반응형
https://www.acmicpc.net/problem/1874
문제 해결 알고리즘
스택 수열에 맞게 출력해주는데 이 때, 스택의 맨 위에 있는 수가 주어진 수보다 크면 스택 수열이 될 수 없으므로 그것만 잘 판별해주자
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
int cur_num = 1;
int n; cin >> n;
stack<int> s;
queue<char> q;
s.push(cur_num++);
q.push('+');
for(int i=0;i<n;i++){
int k; cin >> k;
if(s.empty()){
s.push(cur_num++);
q.push('+');
}
if(s.top() > k) {
cout << "NO";
return 0;
}
while(s.top() != k){
s.push(cur_num++);
q.push('+');
}
s.pop();
q.push('-');
}
while(!s.empty()){
s.pop();
q.push('-');
}
while(!q.empty()){
cout << q.front() << '\n';
q.pop();
}
}
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[자료구조, 맵] BOJ 1620 나는야 포켓몬 마스터 이다솜 (0) | 2021.09.23 |
---|---|
[백 트래킹] BOJ 15666 N과 M (12) (0) | 2021.09.18 |
[플로이드-와샬] BOJ 11404 플로이드 (0) | 2021.09.10 |
[그래프 이론] BOJ 1197 최소 스패닝 트리 (0) | 2021.09.10 |
[해싱] BOJ 15829 Hashing (0) | 2021.09.08 |