Search
Duplicate
🍇

스택 수열

주차
14
문제번호
1874
언어
C++
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

문제

풀이

입력을 큐로 받고
가장 앞에있는 숫자만큼 tmp 스택을 쌓는다.
다 쌓고 나면 스택 top 과 큐 의 front 가 같을떄마다 스택과 큐를 pop 한다.
만약 스택과 큐의 front 다 다르면 NO
엔터로 endl 는 매우 느리다. \n 을 적극적으로 쓰는걸 권장!

구현

#include <iostream> #include <queue> #include <stack> #include <vector> using namespace std; int n; queue<int> nums; stack<int> tmp; vector<char> result; void pre() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } void input() { int _t; cin >> n; for (int i = 0; i < n; i++) { cin >> _t; nums.push(_t); } } void solve() { int i; i = 1; while (nums.size()) { for (; i <= nums.front(); i++) { tmp.push(i); result.push_back('+'); } if (tmp.top() == nums.front()) { nums.pop(); tmp.pop(); result.push_back('-'); } else break; } if (nums.size() > 1) { cout << "NO"; } else { for(auto& i : result) cout << i << "\n"; } } int main() { pre(); input(); solve(); return (0); }
C++
복사