https://www.acmicpc.net/problem/1874
* 정처기 단골문제
: 다음 중 stack 의 출력결과로 나올수없는것은? 문제와 유사하다.
* 1씩 증가 구현방법
해결 : int cnt++
벡터나 배열로 구현할 필요가 없다.
*의사코드
1. while(n--) // 모든타겟에대해
2. while(cnt <= target) push(cnt++) ,"+"
3. top != target -> 불가능 , 끝내기
4. 가능하면, pop, "-"
ex) targets = 3 1 2
push 1 2 3
pop 3
2 !=1 이므로 불가능하다.
#include<bits/stdc++.h>
using namespace std;
int n;
stack<int> s;
string ret;
int cnt = 1;
void print_q(queue<int> q) {
while (q.size()) {
cout << q.front()<<" ";
q.pop();
}
cout << endl;
}
void print_s(stack<int> s) {
while (s.size()) {
cout << s.top() << " ";
s.pop();
}
cout << endl;
}
int main() {
cin >> n;
while (n--) {
int target;
cin >> target;
while (cnt <= target) {
ret += "+\n";
s.push(cnt++);
}
if (s.top() != target) {
cout << "NO";
return 0;
}
ret += "-\n";
s.pop();
}
cout << ret;
}
'Algorithm > 스택' 카테고리의 다른 글
백준 2504 c++ // 스택응용 (0) | 2023.09.01 |
---|---|
백준 10799 c++ // 스택응용 idea, 남은'('의 갯수를 활용하라 (0) | 2023.08.23 |
백준 4949 cpp // 괄호검사 알고리즘 (0) | 2023.08.22 |
백준 2493 cpp // 스택 idea 발상, 초기예외 처리하는법 : 범위밖의 객체를 push하라 (0) | 2023.08.17 |
백준 10773 cpp // 스택사용법 (0) | 2023.08.17 |