문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array
가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 <
array
의 길이 < 100
- 0 ≤
array
의 원소 < 1000
풀이
def solution(array):
answer = {}
for i in array:
if i in answer:
answer[i] += 1
else:
answer[i] = 1
sorted_answer = sorted(answer.items(), reverse = True,key = lambda item:item[1])
if len(sorted_answer) <= 1:
mode = sorted_answer[0][0]
else:
if sorted_answer[0][1] == sorted_answer[1][1]:
mode = -1
else:
mode = sorted_answer[0][0]
return mode
가장 먼저 든 생각은 딕셔너리를 이용하는 것이었습니다. 먼저 {숫자:숫자의 개수}를 for문 if문을 활용해
딕셔너리로 만들었습니다.
그 다음으로 만들어진 딕셔너리를 value값으로 내림차순 정렬하였습니다.
여기서 array에 원소가 0개이거나 1개인 경우, 밑 line 포함하여 실행했을때 list index out of range 오류가 발생하므로 그때의 경우를 추가하여 작성하였습니다.
또한, 최빈값이 같은 경우에는 -1을 출력해야 하므로 그 경우도 따로 추가하여 작성하였습니다.
Uploaded by Notion2Tistory v1.0.0