본문 바로가기

Algorithm/Implementation

(Python3) - 프로그래머스(코딩테스트 입문) : 최빈값 구하기

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

key는 숫자 value는 빈도 수를 저장할 hashmap인 dict를 선언 후 빈 객체로 초기화합니다.

📔 풀이과정

1. dict에 array의 원소를 순회하며 숫자, 빈도 수를 저장합니다.

 

2. max_freq를 선언해 dict의 value들 중 최댓값을 저장합니다.

 

3. max_freq_cnt를 선언해 dict의 value들 중 max_freq인 value가 있다면  max_freq가 몇 번 나왔는지 세주고 answer를 갱신합니다.

 

📔 정답 출력 | 반환

1.  max_freq_cnt가 1초과하면 -1을 반환합니다.

 

2. answer를 반환합니다.

 


📕 Code

📔 Python3

def solution(array):
    dict = {}
    for num in array:
        dict[num] = dict.get(num,0) + 1
    
    max_freq = max(dict.values())
    max_freq_cnt = 0
    for key, value in dict.items():
        if max_freq == value:
            answer = key
            max_freq_cnt+=1
            
    if max_freq_cnt > 1:
        return -1
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.