[프로그래머스] 최빈값 구하기

Jimeaning·2023년 7월 23일
0

코딩테스트

목록 보기
116/143

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120812

코딩 테스트 입문 문제 중 '최빈값 구하기'

def solution(array: list) -> int:
    dict = {}

    # for 반복문으로 입력 list 순회
    for num in array:
        # 딕셔너리에 현재 값이 할당되있지 않다면 1 할당
        if num not in dict:
            dict[num] = 1
        # 그렇지 않을 시, 증감
        else:
            dict[num] += 1
            
    # 딕셔너리의 벨류값 기준으로 desc 정렬
    result = sorted(dict.items(), key=lambda x: x[-1], reverse=True)
    
    if len(result) <= 1:
        return result[0][0]
    # 최빈값이 여러개면, -1 반환
    return result[0][0] if result[0][-1] != result[1][-1] else -1

과거의 풀었던 코드이다.

추가

(+ 23/7/23)

리스트를 사용해 풀었다.

def solution(array):
    answer = 0
    dp = [0 for _ in range(1000)]
    
    for i in array:
        dp[i] += 1
        
    if dp.count(max(dp)) > 1:
        answer = -1
    else:
        answer = dp.index(max(dp))
        
    return answer

주의할 점은 최빈값이 몇 개나 반복되었는지를 출력하는 것이 아닌 최빈값의 숫자가 무엇인지를 출력하는 것이다.
나를 포함해서 이러한 실수를 한 사람이 많았다.

profile
I mean

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기