728x90
반응형
https://www.acmicpc.net/problem/2493
Python
import sys
n = int(sys.stdin.readline())
top = list(map(int,sys.stdin.readline().split()))
ans = [0]*n
stack = [(top[0],1)]
for i,t in enumerate(top[1:],1):
while stack and stack[-1][0] < t:
stack.pop()
if stack:
ans[i] = stack[-1][1]
stack.append((t,i+1))
#print(t,i)
print(" ".join(map(str,ans)))
# 0 0 2 2 4
짧은 풀이
ans | i, t | stack |
0 | 1, 6 | [ (6,1) ] |
0 | 2, 9 | [ (9,2) ] |
2 | 3, 5 | [ (9,2), (5,3) ] |
2 | 4, 7 | [ (9,2), (7,4) ] |
4 | 5, 4 | [ (9,2), (7,4), (4,5) ] |
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준] [Python] 17952번 과제는 끝나지 않아! - 스택 (0) | 2021.05.23 |
---|---|
[백준] [Python] 10799번 쇠막대기 (0) | 2021.05.22 |
[백준] [Python] 14889번 스타트와 링크 (0) | 2021.05.19 |
[백준] [Python] 14888번 연산자 끼워넣기 - 백트래킹 (0) | 2021.05.18 |
[백준] [Python] 1966번 프린터 큐 - 큐 (0) | 2021.05.16 |