[프로그래머스] LV.0 최빈값 구하기

seho·2023년 2월 9일
0

codetest

목록 보기
2/17
post-thumbnail

문제

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 
정수 배열 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

풀이

변수로 정수배열이 주어지는데 이 정수배열의 순서를 뒤집어서 return해야 한다.
아래 두 가지 방법으로 풀어봤다.

for with reversed() 함수

def solution(array):
    a_len = len(array) # 입력 받은 배열의 길이 변수
    a_cnt = {} # array 내에 각 변수 count 해주기 위해 dict 정의
    cnt = 0 # array 내 변수 count
    dup_cnt = 0 # 최빈수 중복 값이 동일할 경우 count
    
    for i in array:
        cnt = 0
        for j in range(0,a_len):
            if i == array[j]:
                cnt+=1
        
        a_cnt[i]=cnt # a_cnt dict의 key = i / value = cnt 값
    
    max_val = max(a_cnt.values()) # a_cnt dict value값 중 최대 값
    max_key = max(a_cnt, key=a_cnt.get) # a_cnt value 최대 값의 key
    
    # 만약 a_cnt value값이 중복되면 -1 을 return 해주기 위한 코드
    for value in a_cnt.values():
        if value == max_val:
            dup_cnt+=1 
    
    if dup_cnt >=2:
        return -1      
                
    return max_key
  • dictionary 변수를 사용하여 각 정수들의 중복 수를 저장해주고
  • 최빈수 중복 값이 중복된다면 count를 해줘서
  • return 값이 다르도록 설계

오답노트

  • 더 간단한 코드도 있을테지만 여기서는 정수들의 중복되는 수를 count 하기 위해 dictionary 변수를 사용했다.
profile
develop my'self and sw

0개의 댓글