/ 제출 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의 숫자가 뭐 어떻게 된다는건지 지문 이해가 조금 오래 걸렸습니다.
: 그리고는 스택 기준으로 확인해야할 지 조금 고민하고, 값을 스택에 넣으면서 조건을 따져야겠다고 판단이 되었습니다.
: 더하는 것도 기록되어야하기 때문에 일단 값이 들어오면 무조건 스택에 넣고 만약 넣은 값이 우리가 현재 타겟하는 값과 동일하다면 조건 부합까지 쭉 스택에서 제거하는 식으로 구성했습니다.
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
[ BOJ / 파이썬 ] 18258 큐2 (0) | 2022.08.14 |
---|---|
[ BOJ / 파이썬 ] 2493 탑 (0) | 2022.08.14 |
[ BOJ / 파이썬 ] 10773 제로 (0) | 2022.08.13 |
[ BOJ / 파이썬 ] 1158 요세푸스 문제 (0) | 2022.08.11 |
[ BOJ / 파이썬 ] 1406 에디터 (0) | 2022.08.11 |