nueijeel

[프로그래머스][python] Lv.0 - 최빈값 구하기 본문

코딩테스트/프로그래머스

[프로그래머스][python] Lv.0 - 최빈값 구하기

nueijeel 2023. 2. 9. 14:03

문제 설명

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

 

해결 단계

코드를 작성하다가 예전에 계수정렬 배웠던 내용이 생각나서 count 배열을 이용해 해결해보았다.

1. 정수 배열 array를 오름차순으로 정렬(이미 정렬된 배열을 주는건지는 모르겠으나 일단 정렬해줌)

2. 정렬된 array의 맨 마지막 요소를 길이로 하는 배열 선언 및 초기화

3. for 문을 통해 array에 있는 요소 당 등장 횟수를 count 배열에 저장

4. count 배열의 값과 인덱스 모두 접근해야하므로 dictionary 자료형 변수에 저장

5. if문을 통해 최빈값 개수가 단일한지 판단 후 알맞는 값을 return

 

작성한 코드

def solution(array):
    array.sort()
    count = [0]*(array[-1]+1)
    d = dict()
    
    for i in range(len(array)):
        count[array[i]]+=1
        
    for i in range(len(count)):
        d[i]=count[i]
    
    if sorted(d.values(), key=lambda x: x)[-1] == sorted(d.values(), key=lambda x: x)[-2]: return -1
    
    return sorted(d, key=lambda x: d[x])[-1]

뭔가 잘 바꿔보면 count 배열을 아예 dictionary형 변수에 바로 저장할 수 있을 것 같은데 아직 자료형 사용이 익숙하지 않아서 되는대로 작성해보았다... 통과한 뒤 다른분들이 작성하신 코드를 보고 난 아직 한참 멀었구나~ 싶었다 ㅋㅋㅋㅋㅋㅋㅋ

알고리즘, 파이썬 자료형을 더 열심히 공부해서 클린코드 작성 습관을 들이고싶다!

728x90