Search
Duplicate
📗

스택 수열

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

문제접근

push를 오름차순으로 하기 때문에 i를 순회하면서 만들고 싶은 수열이 나오면 pop, 그 외에는 push

놓쳤던 부분

pop을 할때 i—를 안 해주면 i를 전체 순회할 수가 없음

코드

2552 KB

20 ms

#include <iostream> #include <stack> #include <queue> using namespace std; int main(void) { int n; queue<int> answer; queue<char> print; stack<int> s; int tmp; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; i++) { cin >> tmp; answer.push(tmp); } for (int i = 1; i <= n; i++) { if (!s.empty() && s.top() == answer.front()) { s.pop(); answer.pop(); print.push('-'); i--; } else { s.push(i); print.push('+'); } } while (!s.empty()) { if (s.top() == answer.front()) { print.push('-'); answer.pop(); s.pop(); } else { cout << "NO"; return (0); } } while (!print.empty()) { cout << print.front() << "\n"; print.pop(); } return (0); }
C++
복사