[프로그래머스] LV.0 - 최빈값 구하기 | 파이썬

SangJin Ham·2023년 6월 27일
0

프로그래머스

목록 보기
6/20
post-thumbnail

코딩테스트 역량 강화 교육(거점형 특화 프로그램)이라는 프로그램에 참여해 공부한 내용입니다.

LV.0 - 최빈값 구하기

앞서 공부한 해시을 사용해 최빈값 구하기 문제를 풀어보겠다.


문제 설명

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


제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예

arrayresult
[1, 2, 3, 3, 3, 4]3
[1, 1, 2, 2]-1
[1]1

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.

입출력 예 #2

  • [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.

입출력 예 #3

  • [1]에는 1만 있으므로 최빈값은 1입니다.

코드

from collections import Counter

def solution(array):
    sH = Counter(array)
    sH_max = max(sH.values())
    
    max_list = []
    for num, cnt in sH.items():
        if cnt == sH_max:
            max_list.append(num)
            
    if len(max_list) > 1:
        return -1

    return max_list[0]

풀이

  1. Counter를 이용해 sHarray의 빈도 수를 센 Counter 객체를 반환
  2. sH_maxmax(sH.values())으로 sH의 빈도 수 중 가장 큰 값을 저장
  3. sH를 하나씩 돌며 value의 값이 sH_max와 동일한 key 값들을 max_list에 삽입
  4. for문 종료 후 max_list1보다 크면 즉, 최빈 값이 여러 개return -1, 한 개return max_list[0]
profile
끄적끄적

0개의 댓글