과정
1. 이전 오큰수 문제와는 다르게 stack에 index만 넣어서 메모리 낭비를 줄임
2. defaultdict를 이용하여 해당 값이 얼마나 등장하였는지 저장
3. 비교
from collections import defaultdict
n = int(input())
a = list(map(int, input().split()))
b = defaultdict(int)
for i in a:
b[i] += 1
stack = []
result = []
for i in range(len(a)):
while stack:
index = stack[-1]
if b[a[index]] < b[a[i]]:
stack.pop()
result.append((index, a[i]))
else:
break
stack.append(i)
for s in stack:
result.append((s, -1))
result.sort()
for i in result:
print(i[1], end=' ')
time:25분