파이썬 최빈값 구하기 실패기

Mkim4·2023년 6월 12일
1

프로그래머스 최빈값 구하기(링크 바로가기)

def solution(array):
    arr = list(set(array))
    
    
    dict = {}
    for i in arr:         
        count = array.count(i)
        dict[i] = count
        
    answer = sorted(dict.values(), reverse=True)

    if len(answer) > 1 and answer[0] == answer[1]:
        return -1
    else:
        return next(iter(answer))

arr 이라는 중복이 제거된 리스트로 count를 할 i를 결정하고
dict라는 딕셔너리 자료형에 i : count된 i 의 개수를 저장했다.
그리고 내림차순을 통해서
만약 answer의 개수가 2개라면 answer[0] 값과 answer[1]값을 비교 후
같다면 -1 반환
같지 않다면 answer[0]의 키 값을 반환하는 식으로 문제를 해결했다.
하지만 타임아웃으로 문제해결을 실패했다.

책에 나온대로 풀어야겠다.
오래전에 풀었던 문제이므로 복기할 겸 다시 적어두겠다.

def solution(array):
    answer = 0
    
    dict_array = {}
    
    for i in array:
        if i in dict_array:
            dict_array[i] += 1
        else:
            dict_array[i] = 1
    
    max_idx = -1
    max_cnt = 0
    for i in dict_array:
        # print(dict_array[i])
        if dict_array[i] > max_cnt:
            max_cnt = dict_array[i]
            max_idx = i
        elif dict_array[i] == max_cnt:
            max_idx = -1
    
    answer = max_idx
    
    return 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
profile
귀요미 개발자

0개의 댓글