[백준][파이썬] 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