알고리즘 - 스택수열

pa324·2019년 10월 9일
0
#include<iostream>
#include<stack>
#include<string>
using namespace std;

int main() {
	int n,m=0;
	stack<int> s;
	string ans;
	cin >> n;
	
	while(n--) {
		
		int x;
		cin >> x;
		
		if(x > m) {
			while(x > m){
				s.push(++m);
				ans+="+";
			}
			s.pop();
			ans+="-";
		}
		// x > m이 아닌경우 스택에서 계속 pop시킨다. 
		else {
			bool found = false;
			if(!s.empty()){
				int top = s.top();
				s.pop();
				ans += "-";
				if(x==top) found = true;
			}
			if(!found){
					cout << "NO" << '\n';
					return 0;
			}
		
		}
	}
	for(int i = 0; i < ans.length(); i++) {
		cout << ans[i] << "\n";
	}
	return 0;
}
profile
안녕하세요

0개의 댓글