본문 바로가기
Coding Test/프로그래머스 코딩테스트 입문

Python 최빈값 구하기 [코딩테스트 입문 - Day3]

by giem 2023. 1. 16.
반응형

 

 


문제


구현

 

 

 


코드
import statistics
def solution(array):
    temp = statistics.multimode(array)
    return -1 if len(temp)>1 else temp[0]

statistics의 multimode를 사용해 최빈값을 추출했다.

참고 : (https://docs.python.org/ko/dev/library/statistics.html)

multimode의 설명은 다음과 같다.

 

array에서 먼저 발견되는 순서대로 가장 자주 등장하는 값의 리스트를 반환한다.

여러 최빈값이 있으면 둘 이상의 결과를 반환하고 비어있다면 빈 리스트를 반환한다.

 

이 방법은 잘 쓰지 않는 방법이라 코딩테스트에서는 권장하지 않는다.


다른 풀이

enumerate를 써서 배열의 값을 인덱스와 함께 추출해서 반복을 할 수 있다.

enumerate 는 각 값에 번호를 매겨서 리턴해준다. ( ex ['a','b','c','d','e'] => <0,'a' 1,'b' 2,'c'....> )

 

set으로 타입캐스트를 해서 중복을 제거해주고

중복을 제거 된 set으로 array에서 값이 없어질 때까지 한번씩 지운다.

i가 0이라면 ( 모두 지워지고 하나의 값만 남았다면 ) 그 값을 리턴하고

아니라면 다 지워진 것이므로 -1을 리턴한다.

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

 

반응형

댓글