[백준/Python3] 17299 오등큰수

nyam·2022년 2월 25일
0

백준

목록 보기
4/34
post-thumbnail

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


풀이

import sys

N = int(input())
A = list(map(int, sys.stdin.readline().split()))

stack = list()
ans = [-1 for _ in range(N)]
f = [0 for _ in range(1000001)]

stack.append(0)

for i in range(N):
    # f를 증가
    f[A[i]] += 1

# 오큰수와 같은 방식으로 품
# 스택이 끝날 때 까지 오등큰수를 찾아본다.
for i in range(1, N):
    while stack and f[A[stack[-1]]] < f[A[i]]:
        ans[stack.pop()] = A[i]
    stack.append(i)

print(' '.join(map(str, ans)))

17298 오큰수를 풀었다면 크게 어렵지 않은 문제다. 먼저 등장한 횟수를 저장하는 f를 갱신하고 비교하는 숫자를 A 리스트가 아닌 f 리스트에서 참조하는 것으로 바꾸는것으로 마무리. 나머지는 오큰수의 풀이와 차이는 없다.

0개의 댓글