jyamethyst21 님의 블로그

프로그래머스 - '최빈값 구하기' (PYTHON 풀이) 본문

CODING 💻

프로그래머스 - '최빈값 구하기' (PYTHON 풀이)

jyamethyst21 2026. 4. 26. 02:03

문제:

 

입력받은 배열에서 가장 많이 나오는 값을 찾아 출력하면 되는데, 만약 최빈값이 여러 개라면 -1을 리턴하면 된다.

 

풀이:

def solution(array):
    count = {}

    for num in array:
        if num in count:
            count[num] += 1
        else:
            count[num] = 1

    max_count = max(count.values())
    mode = []

    for k, v in count.items():
        if v == max_count:
            mode.append(k)

    if len(mode) > 1:
        return -1
    else:
        return mode[0]
    
solution([1,1,1,1,1,2,2,2,2,3,3,3,4,4,5,6,6,6,6,6])

먼저 개수 파악을 위한 딕셔너리 count를 선언해준다.

그 다음 입력받은 값을 하나씩 순회하면서, 미리 선언한 count에 해당 값이 존재하는지 확인하고 있다면 값을 1 증가, 없으면 1로 초기화하는 반복문을 작성하였다.

 

반복문이 끝나면 모든 숫자의 등장 개수가 count 딕셔너리에 존재하게 될 것이고 max() 함수를 활용해서 가장 큰 값을 구한 뒤 max_count에 저장한다.

 

이후 items() 함수를 활용해서 키, 값을 k, v에 넣고 만약 count 딕셔너리에 존재하는 값이 max_count와 같다면, 가장 큰 값이므로 해당 값을 mode 리스트에 추가한다.

 

그러면 mode에는 max_count와 값이 같은 키값들이 전부 들어가있을 것이고, 해당 길이가 1보다 크다면 중복된 값이 존재하는 것이기 때문에 -1을 출력, 그렇지 않다면 mode에는 하나의 키 값만 들어가있으므로 해당 값을 그대로 출력해주면 된다.