nueijeel
[프로그래머스][python] Lv.0 - 최빈값 구하기 본문
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][python] Lv.0 - 캐릭터의 좌표 (0) | 2023.02.14 |
---|---|
[프로그래머스][python] Lv.0 - 외계행성의 나이 (0) | 2023.02.14 |
[프로그래머스][python] Lv.0 - 옹알이 (0) | 2023.02.08 |
[프로그래머스][python] Lv.0 - 평행 (0) | 2023.02.08 |
[프로그래머스][python] Lv.0 - 분수의 덧셈 (0) | 2023.02.08 |