problem-17299

유성·2022년 11월 21일
0

PS

목록 보기
30/47

과정
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분

profile
기록

0개의 댓글