본문 바로가기

알고리즘/백준

[백준 17299][파이썬] 오등큰수

https://www.acmicpc.net/problem/17299

 

17299번: 오등큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

 

import sys

input = sys.stdin.readline

N = int(input())
num_list = list(map(int, input().strip().split()))
stack = []
result = ['-1'] * N

NGF = {}
for num in num_list:
  if num in NGF:
    NGF[num] += 1
  else:
    NGF[num] = 1

for i in range(0, N):
  while len(stack) != 0 and NGF[num_list[stack[-1]]] < NGF[num_list[i]]:
    result[stack.pop()] = str(num_list[i])
  stack.append(i)

print(" ".join(result))