🔗 문제
https://school.programmers.co.kr/learn/courses/30/lessons/120812
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array
가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 <
array
의 길이 < 100 - 0 ≤
array
의 원소 < 1000
입출력 예
array | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
+) 추가 반례!
array | result |
[0, 0, 1] | 0 |
[1, 1, 1] | 1 |
[1, 2, 3] | -1 |
💻 Code
from collections import Counter
def solution(array):
if len(array) == 1 or len(set(array)) == 1:
return array[0]
else:
counter = Counter(array).most_common()
if counter[0][1] == counter[1][1]:
return -1
else:
return counter[0][0]
- 원소의 개수가 1개이거나, 모두 같은 원소로 이루어진 배열의 경우 (<- 이러한 특이 케이스를 빼먹어서 몇 번 틀렸다.)
- 따로 등장 횟수를 카운트할 필요가 없으므로 바로
array[0]
을 리턴한다.
- 위의 조건에 해당되지 않을 경우
collections.Counter
를 이용하여 배열의 각 문자에 대한 등장 횟수를 카운트한다.most_common()
은(요소값, 등장 횟수)
형태로 가장 많이 등장한 순서대로 리스트를 반환한다.
counter[0][1] == counter[1][1]
이True
라는 말은, 최빈값이 여러 개라는 뜻이므로-1
을 리턴한다.False
일 경우, 최빈값이 하나라는 말이므로counter[0][0]
을 리턴한다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv.0/Python] 특이한 정렬 (0) | 2023.07.07 |
---|---|
[Lv.0/Python] 문자열 밀기 (0) | 2023.07.07 |
[Lv.0/Python] OX퀴즈 (0) | 2023.07.06 |
[Lv.0/Python] 홀수 vs 짝수 (0) | 2023.07.05 |
[Lv.0/Python] k의 개수 (0) | 2023.07.05 |