https://www.acmicpc.net/problem/2493
N = int(input())
N_list = list(map(int,input().split()))
stack = []
ans = []
for i in range(N):
while stack:
if stack[-1][1] > N_list[i]:
ans.append(stack[-1][0]+1)
break
else:
stack.pop()
if not stack:
ans.append(0)
stack.append([i,N_list[i]])
print(' '.join(map(str,ans)))
스택에서 자주 출제되는 유형의 문제인데 좋은 테크닉을 배웠다.