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
숫자 1부터 1씩 더해가면서 스택에 +를 push하고, 입력받은 수와 일치하면 스택의 top에있는 수가 일치하면 스택에 -를 push함
코드
#include <iostream>
#include <string>
#include <stack>
#include <vector>
using namespace std;
int main()
{
int test;
int index = 0;
int inp;
cin >> test;
cin.ignore();
stack<int> st;
vector<char> v;
vector<int> input;
for (int i = 0; i < test; i++)
{
cin >> inp;
input.push_back(inp);
}
for (int i = 0; i < test; i++)
{
for (int j = index; j < test; j++)
{
st.push(j + 1); //1부터 push
v.push_back('+');
while (!st.empty())
{
if (st.top() == input[i])
{
st.pop();
v.push_back('-');
index = j + 1;
i++;
}
else
break;
}
}
}
if (st.empty())
{
for (int i = 0; i < v.size(); i++)
cout << v[i] << "\n";
}
else
cout << "NO";
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1934번: 최소공배수 (C++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 1929번: 소수 구하기 (c++) (0) | 2022.03.31 |
[Baekjoon] 17413번: 단어 뒤집기2 (c++) (0) | 2022.03.31 |
[Baekjoon] 17299번: 오등큰수 (C++) (0) | 2022.03.31 |
[Baekjoon] 17298번: 오큰수 (c++) (0) | 2022.03.31 |