< [C++/백준 1874번] 스택 수열

프로그래밍 공부/백준 (C++)

[C++/백준 1874번] 스택 수열

Rocketbabydolls 2024. 10. 11. 18:46

 

 

 

처음에는 도저히 무슨 말인지 이해가 가지 않아 여러 번 읽어 보았다.

 

나만 그런 건지는 모르겠는데 문제의 설명이 조금 부실한 것 같다.

수열이므로 1234 ~ 순서로 수를 스택에 채워서 수를 빼내면서 수의 나열을 만들 수 있는지 확인하라는 문제였는데, 정말 처음 읽고는  ?예? 했다.

 

 

1234 순으로 증가해가면서 원하는 수가 나올때까지 증가 시키며 stack 에 push 후

 

 원하는 수와 만나면 pop 한다. 원하는 수가 스택 밑에 갇혀있지 않다면 무조건 꺼낼 수 있기 때문에 명확한 로직으로 보인다.

 

만약 원하는 수가 top에 없다면 수를 나열할 수 없다. 

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

stack <int> s;
vector <char> result;

int main() {

	int N;

	cin >> N;

	int j = 1;

	for (int i = 0; i < N; i++)
	{
		int input;
		cin >> input;

		while (j <= input)
		{
			s.push(j);
			j++;
			result.push_back('+');
		}

		if (s.top() == input)
		{
			s.pop();
			result.push_back('-');

		}
		else
		{
			cout << "NO";
			return 0;
		}

	}

	

	for (auto i : result)
	{
		cout << i << "\n";
	}

	
	return 0;
}

 

 

STL 컨테이너를 사용하는 것이 아직도 익숙하지 않나보다. 항상 또 상기시키며 사용하자. 모방부터 하여 내 것으로 만드는 것이 목표다.

'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글

[C++/백준 10845번] 큐  (0) 2024.10.12
[C++/백준 1874번] 에디터  (0) 2024.10.12
[C++/백준 9093번] 괄호  (0) 2024.10.11
[C++/백준 9093번] 단어 뒤집기  (0) 2024.10.11
[C++/백준 4948번] 베르트랑 공준  (0) 2024.01.28