알고리즘/프로그래머스

[파이썬] 프로그래머스_최빈값 구하기

딱따구르리 2022. 10. 25. 15:54
728x90
반응형

문제

 

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

 

프로그래머스

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

programmers.co.kr


 

해설

 

딕셔너리를 사용해서 각 숫자의 개수를 저장해두면 풀기 편하다.

max value값과 같은 value를 가진 key의 개수만 파악하면 된다.


코드

 

-파이썬

import operator

def solution(array):
    answer = list(set(array))  # 중복 제거한 array
    dic = {}
    for i in answer:
        dic[i] = array.count(i)  #각 숫자의 개수를 세서 딕셔너리에 key, value로 추가

    max_0 = max(dic.items(), key=operator.itemgetter(1))[0]  #max인 키값
    max_1 = max(dic.items(), key=operator.itemgetter(1))[1]  #max인 밸류값
    cnt = 0
    for v in dic.values():
        if max_1 == v:  #max인 밸류 값과 각 키의 밸류 값이 같으면 +1
            cnt += 1

    if cnt > 1:  #max와 같은 밸류를 가진 수가 1개를 초과하면 최빈값이 여러개이므로 -1을 리턴
        return -1
    else:  #1개면 최빈값과 max값이 같다는 뜻이므로 max값의 키를 출력
        return max_0
728x90
반응형