[SWEA] 1204 최빈수 구하기
두 가지로 풀이해보았다.
- Counter 라이브러리 사용
- Counter 함수 구현
Counter 라이브러리 사용 풀이
from collections import Counter
t = int(input())
for i in range(t):
t_num = int(input())
array = list(map(int, input().split()))
print(f"#{t_num}",Counter(array).most_common()[0][0])
- Counter(list) : list 내 데이터의 빈도 수를 계산해서 순서쌍 형식으로 반환한다.
[(71, 17), (22, 16), (41, 15), (67, 15), (13, 15), (32, 15), (34, 15), (21, 15), (4, 15), (1, 15)...]
list에 71이 17개, 22가 16개 … 이런 식으로
- 최빈값부터 정렬되게 하기 위해서는 most_common() 메서드를 사용하면 된다.
Counter 함수 구현
def counter(arr):
_dict = {}
for v in arr:
_dict.setdefault(v, 0)
_dict[v] += 1
return _dict
for tc in range(1, int(input())+1):
tc_num = int(input())
scores = list(map(int, input().split()))
counted_scores = counter(scores)
sorted_num = sorted(counted_scores.items(), key=lambda item:item[1], reverse=True)
print(f"#{tc}", sorted_num[0][0])
라이브러리가 사용이 불가능한 대비하기 위해서 counter함수를 만들어봤다.
setdefault를 이용해서 키 값이 있다면 키 값을 반환하고 없다면 두 번째 인자의 값을 반환할 수 있다.
그리고 각 값을 count up 해서 값으로 저장해주면 된다.