문제
1n의 수로 이뤄진 수열이 주어진다. 1n까지 수를 순서대로 스택에 넣었다 뺐다 하면서 주어진 수열을 만드는 방법을 출력해야 한다.
풀이
처음에는 막막했는데, 스택의 성질을 생각하면서 구현했더니 됐다 !
스택 - Last in First out!!
import sys
input = sys.stdin.readline
MIIS = lambda: map(int, input().split())
n = int(input())
arr = list(int(input()) for _ in range(n)) # 입력된 수얼
ans = []
stack = []
idx = 0 # 입력된 수열 어디까지 만들었는지
for i in range(1, n+1):
stack.append(i) # 스택에 넣는다
ans.append('+')
while stack:
if stack[-1] == arr[idx]:
stack.pop() # 스택에서 뺀다
ans.append('-')
idx += 1 # 입력된 수열 일부를 만들었으니 idx 하나 증가
else:
break
# 답이 있으면
if idx == n:
for a in ans:
print(a)
else: # 답 없으면
print('NO')
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준-파이썬] 11779: 최소 비용 구하기2 (0) | 2022.01.13 |
---|---|
[백준-파이썬] 9465: 스티커 (0) | 2021.12.31 |
[백준-파이썬] 12851: 숨바꼭질 2 (0) | 2021.12.30 |
[백준-파이썬] 15927: 회문은 회문아니야! (0) | 2021.12.28 |
[백준-파이썬] 15990: 1,2,3 더하기 5 (0) | 2021.12.26 |