본문 바로가기
백준 알고리즘

파이썬) 백준 알고리즘 | 2910번 : 빈도 정렬

by 코딩새내기_ 2022. 3. 2.

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

 

2910번: 빈도 정렬

첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다.

www.acmicpc.net

백준 2910 '빈도 정렬' 문제입니다.

dictionary 자료형에서 key에 숫자 value에 빈도를 저장해두고

for i, (key, val) in enumerate(s.items()):

 를 이용하여 리스트로 만들어줍니다.

import sys
input = sys.stdin.readline

n, c = map(int, input().split())
nums = list(map(int, input().split()))
s = dict()
for num in nums:
    if num not in s.keys():
        s[num] = 1
    else:
        s[num] += 1
results = []
for i, (key, val) in enumerate(s.items()):
    results.append([key, val])
results.sort(key = lambda x :-x[1])
for result in results:
    for i in range(result[1]):
        print(result[0], end=' ')

댓글