문제 : https://www.acmicpc.net/problem/17299
import sys
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
dict = {}
answer = [-1] * n
# 원소별 개수 count
for i in data:
if(dict.get(i)):
dict[i] += 1
else:
dict[i] = 1
stack = []
for i in range(n):
while stack and dict.get(data[stack[-1]]) < dict.get(data[i]):
answer[stack.pop()] = data[i]
print(answer)
stack.append(i)
print(*answer)
dict.get(data[stack[-1]]) < dict.get(data[i])
직전 원소와 그 다음 원소의 value값 비교
(data[0],data[1]), (data[1],data[2])....- 위 코드가 True -> 오른쪽에 있는게 등장 횟수가 더 많다는 뜻!
- stack에서 하나씩 꺼내서 현재 data값과 등장횟수를 비교하여 answer에서 값을 바꿔준다.