본문 바로가기
Algorithm/코딩테스트 (Python)

[프로그래머스][셋(집합)] 최빈값 구하기

by 싱브이 2023. 10. 23.
728x90
반응형

문제

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

 

 

 

 

내 생각

Counter()는 값의 빈도를 알려준다! 그리고 most_common(숫자)를 이용하면 숫자만큼의 순위까지로도 보여준다.

count와 Counter을 정리해둬서 생각났다 (만약 안했으면 생각안났을듯..)

근데 다른 사람의 코드를 확인하다가 WOW했던 코드를 봤다 ! 내 코드 2번에 올려둔다.

enumerate를 통해 배열에 중복되지 않는 값을 구한 후 그 값을 배열에서 제거하는 방식이다! 문제를 풀면서 드는 생각은 정말 생각의 전환이 필요하다는 것이다 !

 

 

내 코드

1.

from collections import Counter

def solution(array):
    counts = Counter(array)
    most_common = counts.most_common(2)
    if len(most_common) == 1 or most_common[0][1] != most_common[1][1]:
        return most_common[0][0]
    else:
        return -1

 

2.

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

댓글