마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍/Baekjoon Online Judge

BOJ 1874번(스택 수열) 문제 풀이

동동매니저 2019. 1. 29. 14:26

★ solved.ac 난이도 : S3

(2021년 12월 29일 기준)


[문제 링크]

 

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


[문제 분석]

스택의 push 연산과 pop 연산을 응용한 깊이 있는(?) 문제


[풀이]

이 문제는, 스택의 push 연산과 pop 연산을 활용한 심화 문제라고 볼 수 있습니다.

1부터 n까지의 수들이 오름차 순으로 push가 된다고 합니다.

push 연산을 이어가면서, 수열의 데이터와 비교하고, 맨 꼭대기의 값과 일치한다면, 스택에서 데이터를 꺼내고 출력하게 됩니다.

(단, 한 번에 여러 개의 수가 pop이 되는 경우도 있습니다.)

이 과정을 끝까지 반복하고 나서, 스택이 비어있지 않다면, 불가능한 경우입니다.

(주의!!)

여기에서 과정을 출력하면서 마지막에 'NO'를 출력하게 된다면, 출력 초과를 받을 수 있습니다.

따라서, 과정을 임시로 저장해두고, 마지막에 스택이 비어있음을 확인 후, 결과를 출력하셔야합니다.

그리고, 불가능한 경우에는 'NO'만 출력하셔야 합니다.


[소스 코드]

만약 틀린 부분이 있다면 지적 부탁드릴게요~! (댓글 환영!!)