BOJ1874
BOJ 1874. 스택 수열
문제
코드
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
int arr[100001];
int main(int argc, char const *argv[])
{
cin.tie(NULL);
ios::sync_with_stdio(0);
int n, num;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
stack<int> st;
vector<char> v;
int idx = 0;
for (int i = 1; i <= n; i++)
{
st.push(i);
v.push_back('+');
if (i == st.top())
{
while (st.top() == arr[idx])
{
st.pop();
idx++;
v.push_back('-');
if (st.empty())
break;
}
}
}
if (st.empty())
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << "\n";
}
else
{
cout << "no" << '\n';
}
return 0;
}
- 스택에 순서대로 하나씩 넣고 이미 배열에 담긴 인덱스와 맨 위의 스택 값과 비교해 같으면
pop
하는 방식. - 스택이 모두 비었으면 출력하고, 비어있지 않다면 불가능한 수열이므로 NO를 출력한다.
Author And Source
이 문제에 관하여(BOJ1874), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@aksel26/BOJ1874저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)