문제 자체에 대한 이해는 쉬웠으나 머리로는 그려지는데 이걸 논리적으로 프로그래밍을 할려고 하니 많이 힘들었다. 물론 코테가 이런거긴하지만 열심히 해서 몸에 익숙해져야겠다.
이문제를 풀면서 처음에는 스택으로 풀어야 한다는 생각을 못했고 스택으로 풀어야 한다는 힌트를 얻었음에도 입력 배열,결과 저장 배열, 임의의 배열 3개의 배열을 사용한다는 점이 나에게 많이 어려웠다. 그래서 다른분들의 풀이를 보면서 이해하고 꼭 복습을 해야겠다.
import sys
input=sys.stdin.readline
n=int(input())
top=list(map(int,input().split()))
stack=[]
answer=[]
for i in range(n):
while stack:
if stack[-1][1]<top[i]:
stack.pop()
else:
answer.append(stack[-1][0]+1)
break
if not stack:
answer.append(0)
stack.append([i,top[i]])
print(*answer)