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 |