[프로그래머스][파이썬] 최빈값 구하기 - 배열 (Level 0)

뻥튀기아이스크림·2025년 2월 25일
1
post-thumbnail

◽ 문제 출처

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

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

def solution(array):
    count = [0] * (max(array) + 1)	# 횟수 저장할 리스트 초기화
    
    for i in array:
        count[i] += 1				# array 값을 인덱스로 활용해 count 배열에 저장
    
    m = 0							# 여러 개인지 체크용 변수
    for c in count:
        if c == max(count):			
            m += 1					# 해당 인덱스가 최빈값이면 m + 1
    
    if m > 1:						
        return -1					# 최빈값이 여러 개라면 -1 반환
    else:
        return count.index(max(count))
  • 최빈값이 여러 개면 -1을 반환하라는 조건이 까다로운 문제였다.
  • 최빈값이 몇 개인지 체크해줘야 하니까 count 배열에 횟수를 담자.

◽ 다른 사람 풀이

def solution(array):
    answer = 0
    idx = [0] * 1001
    for i in array:
        idx[i] += 1
    if idx.count(max(idx)) > 1:
        return -1
    return idx.index(max(idx))
  • 내가 한 풀이와 흡사하지만, 내 count 배열의 역할과 같은 idx 배열이 주어진 값에 따라 공간을 확보 하는것 같아 공간을 조금 많이 잡아먹지 않나라는 생각이다.

◽ 더 나아가기

  • 위 제한사항처럼 주어질 값이 1000 정도로 작은 수라면 len()을 계산하는 것보다 하드하게 공간을 늘려놓는 것도 선택해볼만 하다.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글