cpp) 백준 1874: 스택 수열
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 1874: 스택 수열

by NEWSUN* 2023. 6. 29.

Problem

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

입력된 수열을 만들기 위해 필요한 연산을 한 줄에 한 개씩 출력한다. push연산은 +로, pop 연산은 -로 표현하도록 한다. 불가능한 경우 NO를 출력한다.

 

 

Solution

#include<iostream>
#include<vector>
#include<stack>

using namespace std;

int n;
stack<int> s;  // 스택
vector<char> result;  // 정답값

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    cin >> n;
    int cnt = 1;

    for(int i=0;i<n;i++){
        int m;
        cin >> m;

        while(cnt<=m){
            s.push(cnt);
            cnt++;
            result.push_back('+');
        }

        if (m==s.top()){
            s.pop();
            result.push_back('-');
        }

        else {
            cout << "NO";
            return 0;  // 종료
        }

    }

    for(int i=0;i<result.size();i++){
        cout << result[i] << '\n';
    }

    return 0;
}

 

 

Reference

https://gaeunhan.tistory.com/16

 

[C++ 백준] 1874 스택 수열

블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1 이상 n이하의 정수가 하나씩 순서대

gaeunhan.tistory.com

 

'코딩 테스트 > 백준 (C++, Python)' 카테고리의 다른 글

cpp) 백준 1012: 유기농 배추  (0) 2023.07.04
cpp) 백준 11723: 집합  (0) 2023.07.01
cpp) 백준 2805: 나무 자르기  (0) 2023.06.27
cpp) 백준 13305: 주유소  (0) 2023.06.27
cpp) 백준 1764: 듣보잡  (0) 2023.06.25