반응형
이번엔 지문이 헷갈려서 고민을 좀 했던 문제입니다.
https://www.acmicpc.net/problem/1874
import sys
ssr = sys.stdin.readline
n = int(ssr())
stack = [0]
stack1 = list(reversed([i for i in range(1,n+1)]))
stack2 = []
main = [int(ssr()) for _ in range(n)]
result = []
for i in main:
num = i
if stack[len(stack)-1] < num:
while stack[len(stack)-1] < num:
stack.append(stack1.pop())
result.append('+')
stack2.append(stack.pop())
result.append('-')
elif stack[len(stack)-1] == num:
while stack[len(stack)-1] == num:
stack2.append(stack.pop())
result.append('-')
else:
print('NO')
break
if main == stack2:
for i in result:
print(i)
지문에서 말하는 push는 오름차순으로만 가능하다 라는 부분이 조금 헷갈렸는데요. 결론적으로는 마지막 숫자보다 큰 숫자가 나오면 push를, 아니라면 pop을, 더 이상 pop을 할 수 없다면 NO를 출력하는 문제였습니다. 저는 조금 편하게 하려고 역순으로 배치한 리스트를 하나 만들어놓고 거기서 원소를 빼와서 stack에 저장하는 방식을 사용했는데요. 해놓고 보니까 굳이 필요가 없었던 것 같기도 하네요.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]백준 2805 풀이 (0) | 2022.02.19 |
---|---|
[BOJ][Python]백준 1966 풀이 (0) | 2022.02.19 |
[BOJ][Python]백준 1654 풀이 (0) | 2022.02.15 |
[BOJ][Python]1002 풀이 (0) | 2021.12.30 |