본문 바로가기
PS/programmers

[Lv. 0] 최빈값 구하기(Python)

by 강렬한 스포트라이트 2023. 2. 13.
반응형

안녕하세요. 

강렬한 스포트라이트 입니다!

 

하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.

 

<문제 설명>

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

 

 

1) set(), count(), max()함수를 사용하지 않고 구현한 코드입니다.

def solution(array):
    #array 중복 제거하기(set함수 사용하지 않음)
    a=[]
    for n in array:
        if n not in a:
            a.append(n)
    #a배열 각 원소의 갯수 구하기(count함수 사용하지 않음)
    cnt=[0 for c in range(len(a))]
    for i in range(len(a)):
        for j in range(len(array)):
            if a[i] == array[j]:
                cnt[i]+=1
    #cnt 최댓값 구하기(max함수 사용하지 않음)
    big=cnt[0]
    for l in range(1, len(cnt)):
        if big < cnt[l]:
            big=cnt[l]
    #big 값의 갯수 확인하기(count함수 사용하지 않음)
    big_cnt=0
    for m in range(len(cnt)):
        if cnt[m] == big:
            big_cnt+=1
    #최빈값 반환, 여러개면 -1 반환
    if big_cnt == 1:
        return a[cnt.index(big)]
    else:
        return -1

 

 

2) set(), count(), max() 함수를 모두 사용하여 구현한 코드입니다.

def solution(array):
    set_array=list(set(array))
    cnt=[]
    for i in range(len(set_array)):
        cnt.append(array.count(set_array[i]))
    if cnt.count(max(cnt))==1:
        return set_array[cnt.index(max(cnt))]
    else:
        return -1

 

 

해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`

감사합니다!

 

 

반응형
SMALL