문제
https://www.acmicpc.net/problem/1874
풀이
지문이 난해해서 한참 봤던 문제. 설명이 조금 더 상세했으면 좋겠다.
- 1~N 까지 랜덤한 수를 입력 받는다.
- 1~N 까지 오름차순으로 스택에 push하면서, 입력 받은 랜덤 수를 pop한다.
- 스택에서 pop 해낼 수 없는 경우 “NO” 출력
n = int(input())
sequence = []
for _ in range(n):
sequence.append(int(input()))
stack, result = [], []
stacknum = 1
for seqnum in sequence:
# 스택에 비교값까지 push
while stacknum <= seqnum:
stack.append(stacknum)
result.append("+")
stacknum += 1
# 스택마지막 값이 비교값과 같으면 pop
if stack[-1] == seqnum:
stack.pop()
result.append("-")
if stack: # 스택에 남은 값이 있으면 실패
print("NO")
else: # 없으면 성공
for r in result:
print(r)
댓글남기기