백준 알고리즘
파이썬) 백준 알고리즘 | 2910번 : 빈도 정렬
코딩새내기_
2022. 3. 2. 17:21
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=' ')