Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
프로그래머스 - '최빈값 구하기' (PYTHON 풀이) 본문
문제:

입력받은 배열에서 가장 많이 나오는 값을 찾아 출력하면 되는데, 만약 최빈값이 여러 개라면 -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에는 하나의 키 값만 들어가있으므로 해당 값을 그대로 출력해주면 된다.
'CODING 💻' 카테고리의 다른 글
| 프로그래머스 - '핸드폰 번호 가리기' (PYTHON 풀이) (0) | 2026.04.28 |
|---|---|
| 프로그래머스 - '주사위 게임 1' (PYTHON 풀이) (0) | 2026.04.27 |
| 프로그래머스 - '짝수는 싫어요' (PYTHON 풀이) (0) | 2026.04.25 |
| 프로그래머스 - '배열 두 배 만들기' (PYTHON 풀이) (0) | 2026.04.24 |
| 프로그래머스 - '없는 숫자 더하기' (PYTHON 풀이) (1) | 2026.04.23 |
