Programming/알고리즘

[프로그래머스] Lv 0 최빈값 구하기 - Python

해치 2022. 12. 13. 18:08
728x90

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

 

2. 제한사항

 

3. Python code

def solution(array):
    #딕셔너리 생성
    count = {}
    for num in array:
        if num not in count:
            count[num] = 0
        count[num] +=1
    
    # 가장 큰 빈도수 찾기
    max_val = 0
    for k, v in count.items():
        if v > max_val:
            max_val = v
     
    #최빈값이 여러개일 경우와 한개일 경우 분기문
    max_cnt = [k for k,v in count.items() if v == max_val]
    if len(max_cnt) >1 :
        return -1
    else:
        return max(count, key=count.get)

 

4. 풀이

1. key가 고유 숫자, value가 빈도수인 딕셔너리 생성

2. 생성한 딕셔너리에서 최대 빈도수 찾기

3. 최대 빈도수가 여러개일 경우와 한 개일 경우 나누기