문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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
def solution(array):
# 제일 많이 카운터 되는 수
num = 0;
# 그 수의 값
answer = 0
# 동일한 카운터가 몇번 있는지
check = 0;
# set 함수를 사용해 겹치지 않는 인자만 for 문
for v in set(array):
# 찾아서 num에 넣어
if array.count(v) > num :
num = array.count(v)
answer = v # 해당 값
check = 1
elif array.count(v) == num:
check += 1
if check == 1 :
return answer
else : return -1
def solution(array):
count_dict = {}
# 배열을 한 번만 순회하면서 각 숫자의 등장 횟수 기록
for num in array:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
# 가장 많이 나온 숫자의 등장 횟수 찾기
max_count = max(count_dict.values())
# 가장 많이 나온 숫자가 여러 개 있으면 -1 반환
most_frequent = [key for key, value in count_dict.items() if value == max_count]
if len(most_frequent) > 1:
return -1
return most_frequent[0]
def solution(array):
count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트
for i in array:
count[i] += 1
m = 0 # 최빈값의 개수
for c in count:
if c == max(count):
m += 1
if m > 1: # 최빈값이 2개 이상이면 -1을 리턴
return -1
else: # 최빈값이 1개이면 해당 숫자를 리턴
return count.index(max(count))
[0] * (max(array+1) : 해당 배열의 최고 숫자까지 정해서, 모든 숫자를 비교하기 위해
이 방법으로 풀면 count.index(max(count))를 사용해 값을 찾아 낼 수 있다.
dict 형태의 풀이를 게속 기억하지 못하는 것 같다. 이런 벨류,숫자 를 비교하는 건 활용할 수 있다고 기억해 놓자