알고리즘/백준

[백준 / Python] 17298번 오큰수 | 초코더

cloud_nice 2020. 1. 30. 14:57

https://www.acmicpc.net/problem/17298

 

17298번: 오큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

나의풀이

n = int(input())
nums = list(map(int, input().split()))
stack = []

ans = [-1 for _ in range(n)]

for i in range(len(nums)):
    #스택이 비지 않았으면서, 다음수가 해당수보다 크면
    while len(stack)!=0 and nums[stack[-1]] < nums[i]:
        #ans[(stack.pop()=현재 수에 해당하는 인덱스)]배열에 다음수 집어넣기
        ans[stack.pop()] = nums[i]
    stack.append(i)
print(*ans)