[BOJ/C++] 1874 스택 수열

GamzaTori·2024년 6월 20일

Algorithm

목록 보기
12/133

문제 이름에서 유추할 수 있듯 스택을 이용하여 해결할 수 있습니다.

  1. 입력받은 숫자가 나올때까지 숫자를 하나씩 증가시켜 스택에 push합니다.
  2. 이후 같은 숫자가 나왔다면 pop을 해주고 pop이 불가능한 상황이라면 스택 수열이 만들어질 수 없습니다.
// boj s2 1874
// 스택 수열

#include <iostream>
#include<vector>
#include <stack>

using namespace std;


int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int N;
	int num = 1;
	stack<int> s;
	vector<char> v;
	cin >> N;
	
	for (int i = 0; i < N; i++)
	{
		int tmp;
		cin >> tmp;

		while (num <= tmp)
		{
			s.push(num);
			v.push_back('+');
			num++;
		}
		if (s.top() == tmp)
		{
			s.pop();
			v.push_back('-');
		}
		else
		{
			cout << "NO";
			return 0;
		}
		
	}
	
	for (auto it : v)
		cout << it << '\n';

	return 0;
}
profile
게임 개발 공부중입니다.

0개의 댓글