[백준] 17299: 오등큰수 (Python)

JiKwang Jeong·2021년 10월 16일
0

문제📖

풀이🙏

  • 17298번 오큰수와 다르게 이번에는 input으로 입력받은 수들이 나온 수를 이용하여 오등큰수를 구한다.
  • Counter 라이브러리를 활용하여 input마다의 중복 개수를 파악한다.
  • count[data[stack[-1]]] < count [data[i]] 즉, 스택의 맨 위에 존재하는 값의 중복 개수가 현재의 input값보다 작을 경우 즉, 오른쪽에 첫번째 오등큰수가 나올 경우 stack 맨 위의 자리에있는 값을 data[i]로 변경한다.

코드💻

from collections import Counter

n = int(input())
data = list(map(int, input().split()))
count = Counter(data) # 변수 마다 개수를 저장
stack = []
result = [-1] * n
stack.append(0)

for i in range(n):
    while stack and count[data[stack[-1]]] < count[data[i]]:
        result[stack.pop()] = data[i]
    stack.append(i)

for r in result:
    print(r, end=' ')
profile
기억보다 기록, 난리보다 정리

0개의 댓글