[C++] 백준 1874 : 스택 수열

Kim Nahyeong·2022년 1월 15일
0

백준

목록 보기
59/157

#include <iostream>
#include <stack>
using namespace std;
 
int main(void)
{
	int n, num, cnt = 1;
	stack<int> s;
	string result;
	scanf("%d", &n);
 
	for (int i = 0; i < n; i++) {
		scanf("%d", &num);
		if (num >= cnt) { // 입력값이랑 같아질때까지 push
			while (num + 1 != cnt) {
				s.push(cnt++);
				result += "+\n";
			}
			s.pop();
			result += "-\n"; // 입력값 수열에 넣기
		}
		else {
			if (s.top() == num) { // top이 입력값과 같으면 pop
				s.pop();
				result += "-\n";
			}
			else {
				result = "NO";
				break;
			}
		}
	}
	cout << result;
 
	return 0;
}

진짜 아이디어는 있었는데 그걸 코드로 구현하는게 너무 어려웠다. 왜인지는 모르겠지만 한자기 아이디어에 꽂혀서 계속 while문을 돌려 출력시키려고 했고 계속 segment error가 나서 미치는 줄 알았다...
결국 아예 방법을 바꾸어서 하나씩하나씩 세는 것으로 변경하여 맞출 수 있었다. 진짜 너무너무 머리아파ㅜㅜ

0개의 댓글