https://www.acmicpc.net/problem/2910
💡문제 분석 요약
입력으로 주어진 수열을 빈도가 많은 순으로 정렬한 다음 출력한다.
💡알고리즘 설계
1. 해시에 해당 숫자가 저장된 빈도를 저장한다.
2. 해시의 값을 기준으로, 빈도가 높은 순으로 정렬한다.
3, for문을 이용해 해시의 값 만큼 해당 숫자를 출력한다.
💡코드
import sys
input = sys.stdin.readline
N, C=map(int, input().split())
message=list(map(int, input().split()))
hash={}
for i in message:
if not i in hash:
hash[i]=1
else:
hash[i]+=1
sorted_hash=sorted(hash.items(), reverse=True, key = lambda x: x[1])
for i in sorted_hash:
for _ in range(i[1]):
print(i[0], end=" ")
💡 느낀점 or 기억할 정보
수열을 빈도 정렬 해야하지만 굳이 정렬까진 하지 않고 프린트만 해도 되어 프린트만 했다.
해시 문제를 많이 풀어서 그런가 빨리 끝남 👍
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준 14503번] 로봇 청소기 - 파이썬 (0) | 2024.05.04 |
---|---|
[백준 14889번] 스타트와 링크 - 파이썬 (0) | 2024.05.04 |
[백준 9017번] 크로스 컨트리 - 파이썬 (0) | 2024.04.13 |
[백준 2607번] 비슷한 단어 - 파이썬 (1) | 2024.04.07 |
[백준 13335번] 트럭 - 파이썬 (0) | 2024.04.07 |