1차 코드 - 시간초과 O(N^2)
import sys
leng = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
ans = []
for i in range(leng-1, 0, -1):
for j in range(i-1, -1, -1):
if arr[i] < arr[j]:
ans.append(j+1)
break
if i == 1 and arr[i] > arr[j]:
ans.append(0)
ans.append(0)
ans.reverse()
print(" ".join(map(str,ans)))

2차 코드 - 시간 초과 (마찬가지인듯)
- 반복문 줄이는게 아니라 결국 연산 횟수를 줄여야 할 것 같은데...
import sys
leng = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
ans = []
i = leng-1
next_num = i
while 1:
next_num -= 1
if next_num < 0:
break
if arr[next_num] > arr[i]:
ans.append(next_num+1)
i -= 1
next_num = i
if i == 1 and arr[next_num] < arr[i]:
ans.append(0)
ans.append(0)
print(" ".join(map(str,ans[::-1])))
