코드

n = int(input())

# 기본 스택
stack = []

# +, -를 담을 리스트
result = []

# 만들고자 하는 수열
target = []

for _ in range(n):
    target.append(int(input()))
    
# 1~n까지의 숫자를 담을 변수
num = 1

for t in target:
    while(num <= t):
        stack.append(num)
        result.append('+')
        num += 1
    
    if stack[-1] == t:
        stack.pop()
        result.append('-')
        
# stack이 비었을 때 => 수열이 만들어졌음
if not stack:
    print('\n'.join(result))
    
#     for i in result:
#         print(i)
else:
    print('NO')

문제 해설

스택의 push, pop 기능을 조건에 맞게 활용하고 +, -로 표현하여 출력하는 문제이다. 문제 풀이 과정보다 문제 자체에 대한 해석이 더 오래 걸렸다. 구글링을 하는 중 print와 join문을 활용하여 출력하는 방법을 알게 되어 새롭게 출력 방식을 적용해보았다.

join 참고

댓글남기기