백준 1874번 스택 수열
코드 풀이
result
에 결과값을 굳이 담아주고 이후에 출력한 이유는 만약 스택 수열을 만들지 못하는 입력값일 경우, NO
만 출력해야 하기 때문입니다.
cnt > n + 1
의 조건이 cnt > n
이 아닌 이유는 코드 상 n
값과 입력값이 같을 때 cnt += 1
을 거치면서 cnt
가 n + 1
이 되는 경우가 나오기 때문입니다. 어차피 스택 수열을 만들지 못한다면 cnt
는 무한정 커질 것이므로, cnt > n + 1
의 조건을 설정했습니다.
import sys
input = sys.stdin.readline
n = int(input())
stack = [0]
cnt = 1
result = []
for _ in range(n):
num = int(input())
while True:
if cnt > n + 1:
break
if stack[-1] != num:
stack.append(cnt)
cnt += 1
result.append('+')
else:
stack.pop()
result.append('-')
break
if cnt > n + 1:
print('NO')
else:
for i in result:
print(i)