백준 문제풀이/자료구조
[백준] 1874 스택수열 - python
peach_h
2023. 1. 27. 14:09
https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
도대체 뭔소린지 . .
이틀 고민함
입력과 출력이 왜저런지는 알겠다.
근데 이렇게 구현되는 코드를 짜는 건 어케하는지 모르겠다.
그래서 그냥 구글에서 찾아봤다.
stack은 오름차순으로 쌓인다는 성질을 이용하면
은근 쉬운 문제였음
n = int(input())
stack, ans, find = [], [], True
# 스택의 오름차순 성질 이용, 1부터 시작
now = 1
for i in range(n):
num = int(input())
# push
while now <= num :
# 스택은 1234 오름차순으로 쌓이기 때문에
# 앞에 수보다 입력값이 커야 쌓을 수 있음
stack.append(now)
ans.append('+')
now += 1
# pop
if stack[-1] == num :
stack.pop()
ans.append('-')
# 불가능할 때
else :
find = False
if find == False :
print('NO')
else :
for i in ans:
print(i)
약간 알락말락해서 print 다찍어봄
과연 내가 혼자 이 코드를 짤 수 있을까
의문이 드는 문제와 답이였다.
나중에 또 봐도 또 못풀 것같음. .
열심히 이해하려고 노력해보겠다.