[백준/파이썬] 1874번 스택 수열 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1874번 스택 수열
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
1부터 N까지 수를 스택에 push/pop해서
주어진 수열을 만들 수 있는지 판별하고,
가능하면 연산 순서를 출력하는 문제입니다.
코드
from sys import stdin
read=stdin.readline
n=int(read())
l,num=[int(read()) for _ in range(n)],[n-i for i in range(n)]
stack,r=[],[]
i=0
while i < n:
while num and num[-1] <= l[i]:
stack.append(num.pop())
r.append('+')
tmp = stack.pop()
if tmp != l[i]:
r=['NO']
break
r.append('-')
i+=1
print('\n'.join(r))
설명
목표 수열의 현재 값보다 작거나 같은 수를 push하고, top을 pop해 목표 값과 비교합니다.
불일치가 발생하면 NO,
끝까지 맞으면 +, - 연산 기록을 출력합니다.
댓글남기기