[伯俊]17299:五等大数(Python)


質問する📖



に答える🙏

  • 17298入力された数字とは異なり、今回は入力された数字を用いて5等の大きな数字を求めた.
  • Counterライブラリは、入力ごとの重複数を決定します.
  • count[data[stack[-1]]] < count [data[i]]つまり、スタック上部に存在する値の重複個数が現在の入力値よりも小さい場合、すなわち、右側に最初の対等大数が現れると、スタック上部の値が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=' ')