BOJ #1874

이재영·2023년 1월 3일
0

문제

기본적인 스택문제인데, 수열 생성 연산과정을 출력할때
수열생성이 불가능한 경우도 있기때문에
push또는 pop의 결과를 바로바로 출력해선 안된다.
(불가능할 경우엔 과정 출력없이 "NO"만 출력되어야 하기때문)

따라서 push/pop 연산을 벡터에
저장하고, 수열생성이 완료되면
출력하는 식으로 해야된다.

코드

#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning(disable:4996)
#include <sstream>
#include <math.h>
#define endl '\n'
#include <stack>

using namespace std;
typedef long long ll;

int n;
stack<int> st;
vector<char> v;

int main(int argc, const char * argv[]){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(nullptr);
    
    cin >> n;
    
    int num;
    int temp = 1;
    
    for(int i=0; i<n; i++){
        cin >> num;
        while(temp <= num){
            st.push(temp);
            v.push_back('+');
            temp++;
        }
        
        if(st.top() == num){
            st.pop();
            v.push_back('-');
        }
        
        else{
            cout << "NO" << endl;
            return 0;
        }
    }
    
    for(int i=0; i<v.size(); i++)
        cout << v[i] << endl;
    
}

profile
기록

0개의 댓글