CodingTest/Baekjun Online Judge
[ BOJ / 파이썬 ] 1874 스택 수열
EEOOOO
2022. 8. 13. 12:58
/ 제출 1 /
import sys
input = sys.stdin.readline
n = int(input())
targets = []
for i in range(n):
k = int(input())
targets.append(k)
stack = []
t = 0
result = []
for i in range(1, n+1):
stack.append(i)
result.append('+')
if targets[t] == i:
j = len(stack) - 1
while targets[t] == stack[j]:
stack.pop()
result.append('-')
t += 1
j = len(stack) - 1
if j < 0:
break
if stack:
print('NO')
else:
for res in result:
print(res)
: 처음에 1~n의 숫자가 뭐 어떻게 된다는건지 지문 이해가 조금 오래 걸렸습니다.
: 그리고는 스택 기준으로 확인해야할 지 조금 고민하고, 값을 스택에 넣으면서 조건을 따져야겠다고 판단이 되었습니다.
: 더하는 것도 기록되어야하기 때문에 일단 값이 들어오면 무조건 스택에 넣고 만약 넣은 값이 우리가 현재 타겟하는 값과 동일하다면 조건 부합까지 쭉 스택에서 제거하는 식으로 구성했습니다.