최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
array | result |
---|---|
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
입출력 예 설명
1. [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
2. [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
3. [1]에는 1만 있으므로 최빈값은 1입니다.
collections
모듈의 Counter
클래스 활용하면 되겠네.Counter
의 items를 정렬해서 최빈값을 찾으면 되겠네.Counter
의 values에 1개만 있다면 최빈값을 여러개 있다면 -1을 리턴하면 되겠네.1. counter = collections.Counter(array)
2. counter 빈도수 기준 내림차순 정렬
3. counter[0]의 빈도수가 counter.values에서 1개면
4. return counter[0]의 정수 값
5. 아니면 return -1
from collections import Counter
def solution(array):
counter = Counter(array)
# 빈도수 기준 정렬
cnt = sorted([(n, c) for n, c in counter.items()],
key = lambda x: -x[1])
return cnt[0][0] if list(counter.values()).count(cnt[0][1])==1 else -1
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
most_common
메소드 활용Counter
클래스에 most_common
이라는 빈도가 높은 n개의 값을 출력해주는 메소드를 활용할 수 있다.from collections import Counter
def solution(array):
a = Counter(array).most_common(2) # 빈도수 높은 2개의 값
if len(a) != 1 and a[0][1] == a[1][1]:
return -1
return a[0][0]