문제📖
풀이🙏
- 출력 예시를 보기로 맨 처음 4를 입력하면 stack에는
[1, 2, 3, 4]
가 들어간다. 그리고 stack의 맨 위가 4와 같으므로 stack에서 4를 빼내고 다음 입력값을 기다린다. stack = [1, 2, 3]
- 다음 입력 값 3이 들어오는 경우 count (4) < 3 이므로 while문을 통과하고 stack의 맨 위가 3과 같으므로 stack에서 3을 배내고 다음 입력값을 기다린다.
stack = [1, 2]
- 다음 입력 값 6이 들어오는 경우 count (4) < 6 이므로 stack 에는
[1, 2, 5, 6]
이 들어간다. 그리고 stack의 맨위가 6과 같으므로 stack에서 6을 빼내고 다음 값을 기다린다.
- 다음과 같은 원리를 이용하면 쉽게 구현할 수 있다.
코드💻
import sys
input = sys.stdin.readline
count = 0
stack = []
result = []
tmp = True
for _ in range(int(input())):
x = int(input())
while count < x:
count += 1
stack.append(count)
result.append('+')
if stack[-1] == x:
stack.pop()
result.append('-')
else:
tmp = False
if tmp == False:
print('NO')
else:
for r in result:
print(r)