프로그래머스 최빈값 구하기 문제이며, 풀이는 파이썬 python으로 진행했습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120812
문제설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 <= array의 원소 < 1000
입출력 예
| array | result |
| [1, 2, 3, 3, 3, 4] | 3 |
| [1, 1, 2, 2] | -1 |
| [1] | 1 |
- 입출력 예 #2: 최빈값이 여러개 일때는 -1을 return
- 입출력 예 #3: [1]에는 1만 있으므로 최빈값은 1
코드
def solution(array):
count_n = dict()
for num in set(array):
cnt = array.count(num)
if cnt in count_n:
count_n[cnt].append(num)
else:
count_n[cnt] = [num]
max_freq = max(count_n.keys())
max_n = count_n[max_freq]
if len(max_n) == 1:
return max_n[0]
else:
return -1
솔루션
처음에는 0으로 채워진 빈 리스트를 만들고 카운트 횟수를 기록하려고 했는데 잘 풀리지 않아, 다른 분들의 풀이를 참고하여 dict과 set 자료형을 이용해서 작성하였다.
count_n를 빈 dict형으로 만든 다음 set(array)로 중복 제거한 num값의 빈도를 계산해서 count_n에 있으면 추가하고, 없으면 새로운 리스트로 초기화했다.
이후, max 함수를 사용해서 최대 빈도수와 목록을 구하고 목록의 길이가 1인 경우 -1을 return 하게 했다.
[참고] 다른 사람의 풀이
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
가장 많은 좋아요를 받은 풀이인데 index,value 로 활용할 수 있는 enumerate을 이용해서 계산했다.
'데브코스 데이터엔지니어링' 카테고리의 다른 글
| 프로그래머스 짝수 홀수 개수 (0) | 2024.11.14 |
|---|---|
| 프로그래머스 배열 뒤집기 (0) | 2024.11.13 |
| git branch 로컬 브랜치 삭제하기 (1) | 2024.11.08 |
| 유클리드 알고리즘(최대공약수 GCD, 최소공배수 LCM) 구하기 (0) | 2024.11.07 |
| SQL CTAS(CREATE TABLE AS SELECT)문 (0) | 2024.10.23 |