본문 바로가기

알고리즘/백준-파이썬

[백준] 17299번 (python 파이썬)

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

 

from collections import Counter
import sys

_ = input()
arr = list(map(int, sys.stdin.readline().strip().split()))
count_arr = Counter(arr)
stack = []
result = [-1] * len(arr)

for i in range(len(arr)-1):
  stack.append(i)
  while stack and count_arr[arr[stack[-1]]] < count_arr[arr[i+1]]:
    result[stack.pop()] = arr[i+1]
print(*result)

 

17298번의 오큰수와 같은 개념으로 풀면 된다.

 

17298 번 바로가기 →

 

중간에 Counter개념이 추가되었을 뿐이다.