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
주의할 점은 최빈값이 몇 개나 반복되었는지를 출력하는 것이 아닌 최빈값의 숫자가 무엇인지를 출력하는 것이다.
나를 포함해서 이러한 실수를 한 사람이 많았다.
좋은 정보 얻어갑니다, 감사합니다.