문제

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

 

풀이

스택을 안 쓰고, NO과정을 생각하다가 괜히 복잡하게 풀고 있었다. 그냥 스택 생성 후 , cnt 변수를 지정해서 스택 쌓고, 빼고 하면 되는 간단한 문제였다. 

 

이런 쉬운문제는 쉽고 빠르게 푸는 연습이 코딩 테스트에서 더 중요하다고 생각한다....

 

 

코드

#include<iostream>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
int N;
vector<char> result;
int main() {
	cin >> N;
	stack<int> st; //스택만들어서 되는지 안되는지 확인
	bool flag = false;
	int cnt = 1; // 스택 1부터 시작


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

		while (cnt <= a) { // 지정된 수 까지 cnt 쌓기 
			st.push(cnt); 
			cnt++;
			result.push_back('+');
		}
		if (st.top() == a) {
			st.pop();
			result.push_back('-');

		}
		else {

			flag = true;
			break;
		}

	}
	if (flag == true) cout << "NO" << endl;
	else {
		for (int k = 0; k < result.size(); k++) {
			cout << result[k] << '\n';

		}
	}




	return 0;
}

'알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 영화감독 숌 (1436 / C++)  (0) 2022.01.13
[백준] 랜선자르기 (1654 / C++)  (0) 2022.01.11
[백준] 단어정렬 (C++/1181)  (0) 2021.12.19
[백준] 보물섬 (2589/C++)  (0) 2021.08.22
[백준] DFS와 BFS (1260/C++)  (0) 2021.08.19

+ Recent posts