[백준][파이썬] 17298번. 오큰수

문제

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

 

풀이

N = int(input())
A = list(map(int, input().split()))

NGE = [-1] * N  # NGE[i] : A_i의 오큰수 저장
stack = []

for i in range(N) :
  while (stack and A[stack[-1]] < A[i]) :  # A[i]가 A[stack[-1]]의 오큰수가 되는 경우
    NGE[stack[-1]] = A[i]  # 저장
    stack.pop()  # A[stack[-1]]의 오큰수를 구했으므로 stack에서 해당 인덱스 값 제거
  stack.append(i)
print(*NGE)
728x90