노력에는 지름길이 없으니까요

프로그래머스 - 최빈값 구하기 Python ver. 본문

Python/프로그래머스

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

데건 2024. 7. 8. 17:33
728x90

 

해결일 언어 레벨 테스트명
20240617 Python level 0  최빈값 구하기

 

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

 

 

 


 

내 코드

def solution(array):
    temp = {num:array.count(num) for i,num in enumerate(array)}
    mval = max(temp.values())
    count, answer =0,0
    for k, v in temp.items():
        if v==mval:
            count+=1
            answer=k
    return -1 if count >1 else answer

 

 

 

개선점: 최빈값 구하는 법이 생각이 안나서 구구절절 코드 또 써버림 ㅋㅋ

 

베스트 코드

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0: return a
    return -1

 

코드설명

-> set을 이용하여 배열의 모든 원소를 한 개씩 모두 소거해 나가면서 최종적으로 값의 종류가 1개가 남을 경우(최빈값) i=0이므로 해당 값을 반환하고, 값의 종류가 두 개 이상이 남을 경우 i가 1이상이 되므로 -1을 반환합니다. [3, 3, 3, 1, 2]일때 한 번 반복을 돌면 원소의 종류[1, 2, 3]을 한 번씩 제거하고 [3, 3]이 됩니다. set([3, 3])은 (3)이 되므로 그럼 i는 0에서 끝납니다.

728x90
반응형