코딩테스트

프로그래머스 - 최빈값 구하기

sogummi 2023. 3. 29. 12:25
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 
정수 배열 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):
    #최빈값 구할 딕셔너리 선언
    cnt_dict = {} 
    #정수 리스트 매개변수 순회, 요소가 딕셔너리에 있으면 1 추가, 없으면 1 로 지정
    for _ in array:
        if _ not in cnt_dict:
            cnt_dict[_] = 1
        else:
            cnt_dict[_] += 1
     
    max_cnt = max(cnt_dict.values())  # cnt_values의 최빈값 구하기


    #동일 최빈값을 가진 숫자를 판별 할 리스트 생성
    discriminant = []
    # cnt_dict의 key,value 순회
    for i, j in cnt_dict.items():
        if j == max_cnt:
            discriminant.append(i)
 	#판별리스트의 len으로 동일 최빈값 있는지 확인 
 	if len(discriminant) > 1: 
        return -1
    else:
        return discriminant[0]