Algorithm/백준 알고리즘_Python
[알고리즘][Python] 백준(BOJ) 2910 빈도 정렬_파이썬
알파이
2020. 11. 27. 08:34
2910 빈도 정렬 www.acmicpc.net/problem/2910
2910번: 빈도 정렬
첫쨰 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다.
www.acmicpc.net
문제 풀기 전 공부할 것 : 구현, 자료 구조, 정렬, 맵
풀이
<내용>
- 빈도와 몇 번째 등장하는지를 count에 dictionary로 저장한다.
- count의 key와 value를 저장하고 빈도, 먼저 나온 것으로 정렬한다.
- 그리고 해당 숫자가 나온 만큼 출력한다.
<코드>
n, c = map(int, input().split())
seq = list(map(int, input().split()))
count = {}
idx = 1
for s in seq:
if s in count:
count[s][0] +=1
else:
count[s] = [1, idx]
idx += 1
numbers = [[i, j] for i, j in count.items()]
numbers.sort(key=lambda x:(-x[1][0], x[1][1]))
res = []
for i, j in numbers:
res += [i]*j[0]
print(*res)
728x90
반응형