alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 2910 빈도 정렬_파이썬 본문

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
반응형
Comments