문제 : http://acmicpc.net/problem/17298
해석 : 스택이 비어있다면 현재 인덱스를 넣는다. 그리고 다음 인덱스로 넘어간다. 이번엔 스택이 비어있지 않을 테니, 넣어둔 인덱스 위치의 값 (즉 아직 오큰수를 구하지 않은 혹은 현재 값보다 왼쪽에 있는)과 현재 가리키는 값을 비교한다. 만약 현재 값이 더 크다면 오른쪽에 있으면서 가장 왼쪽에 있을 조건, 값이 클 조건을 모두 만족하는 것이므로 answer 벡터의 값으로 지정한다. 참고로 answer 벡터는 -1로 초기화시켜놓는다.
N = int(input())
num = [*map(int,input().split())]
stack = []
nge = [-1 for _ in range(N)]
for i in range(N):
while stack and num[stack[-1]] < num[i]:
nge[stack.pop()] = num[i]
stack.append(i)
print(*nge)
참고: https://sihyungyou.github.io/baekjoon-17298/