# 나의 풀이
n = int(input())
count = 1
stack = list()
result = list()

for i in range(1, n+1):
    data = int(input())
    while count <= data:
        stack.append(count)
        count += 1
        result.append('+')
    if stack[-1] == data:
        stack.pop()
        result.append('-')
    else:
        print('NO')
        exit(0)

print('\n'.join(result))

data를 n번 받아야하므로

for i in range(1, n+1):

입력받은 data까지 stack이 채워지고 이 후에 pop()으로 뽑아내야 배열을 완성할 수 있으므로,

while count <= data:

스택의 가장 상단의 값과 data가 항상 일치해야하므로

if stack[-1] == data:

스택안에 값들이 위에서부터 아래로 내림차순이 아닌경우,

else:

   print('NO')

   exit(0)

 

'코딩 테스트 > 알고리즘' 카테고리의 다른 글

백준 5387 - 키로거  (0) 2021.02.13
백준 1966 - 프린터 큐  (0) 2021.02.13
백준 - 2798 블랙잭  (0) 2021.02.11
백준 2920번 - 음계  (0) 2021.02.11
SWEA SW 문제해결 Self Study Book Ⅰ 2차시 - Baby-Gin Game  (0) 2020.07.26

+ Recent posts