[알고리즘/백준] 17298: 오큰수(python)

유현민·2022년 4월 5일
0

알고리즘

목록 보기
98/253

스택을 이용하여 풀었다. 처음에는 스택 두개를 이용해서 풀어야하나 생각했는데 그렇게하면 오른쪽에 자기 자신보다 큰게 두개 이상이면 순서를 넘어가 버린다. 그래서 풀이를 참고했는데 인덱스를 스택에 넣어주고 비교해주면 된다고 했다.

import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
answer = [-1] * n
stack = [0]
for i in range(1, n):
    while stack and A[stack[-1]] < A[i]:
        answer[stack.pop()] = A[i]
    stack.append(i)
print(*answer)
profile
smilegate megaport infra

0개의 댓글