코딩테스트

[25.12.17 코테(Python)]-최빈값 구하기

지니248 2025. 12. 17. 21:40

Lv0. 최빈값 구하기 (Python)

링크: 코딩테스트 연습 - 최빈값 구하기 | 프로그래머스 스쿨

 

내가 작성한 코드

def solution(array):
    count = {}
    cnt = 0
    
    # 숫자 개수 세기
    for i in array:
        if i in count: # 이미 나온 숫자라면
            count[i] += 1 # 개수 +1
        else: # 처음 나온 숫자라면
            count[i] = 1 # 개수를 1로 시작
    
    # 가장 많이 나온 횟수 찾기
    max_count = max(count.values())
    
    # k: 실제 숫자 값, v: 해당 숫자가 array에서 나온 횟수
    for k, v in count.items():
        if v == max_count:
            cnt += 1 # 최빈값 후보 개수 +1
            mode = k # 숫자를 최빈값으로 저장
            
    if cnt > 1: # 최빈값이 여러개면 -1, 하나면 그 값 반환
        answer = -1
    else:
        answer = mode
    return answer

 

새로 배운 코드

def solution(array):
    while len(array) != 0: # array가 비어 있을 때까지 반복
        for i, a in enumerate(set(array)):
            # enumerate(): (번호표, 값) 형태
            # i: 몇 번째 값인지 번호(0부터 시작)
            # a: 실제 값(숫자)
            array.remove(a)
            # 값 a를 array에서 한 번 제거
            # 각 값의 등장 횟수를 하나씩 줄이기 위함
        
        # set(array)에 값이 1개뿐이었다면 for문은 딱 한 번만 실행되고 i는 0이 됨 -> 최빈값이 하나뿐이라는 뜻으로 판단
        if i == 0: return a
    
    return -1