프로그래머스/파이썬_입문

최빈값 구하기

싱싱한복초이 2024. 10. 6. 00:47

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

 

프로그래머스

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

programmers.co.kr

[문제 설명]

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

 

[나의 풀이] 틀림

def solution(array):
    list = []
    for i in array:
        x = array.count(i)
        list.append(x)
    if list.count() == len(list):
        return max(list)
    else:
        return -1

 

[다른 풀이]

def solution(array):
	count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트

	for i in array:
		count[i] += 1

	m = 0 # 최빈값의 개수
	for c in count:
		if c == max(count):
			m += 1
    
	if m > 1: # 최빈값이 2개 이상이면 -1을 리턴
		return -1
	else: # 최빈값이 1개이면 해당 숫자를 리턴
		return count.index(max(count))

from collections import Counter

def solution(array):
    a = Counter(array).most_common(2)
    if len(a) == 1:
        return a[0][0]
    if a[0][1] == a[1][1]:
        return -1
    return a[0][0]

counter함수를 사용한 경우

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0: return a
    return -1

https://dduniverse.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B5%9C%EB%B9%88%EA%B0%92-%EA%B5%AC%ED%95%98%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC-Python

 

프로그래머스 | 최빈값 구하기 [파이썬 Python]

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

dduniverse.tistory.com

이 곳에서 코드에 대해서 잘 설명해주고 있음

 

 i값은 for문 종료시에 마지막 i와a 값을 기억하고 있기 때문에 i가 for문 밖에있어도 사용이 가능하다는 듯

 

array가 정렬되었다는 가정하에서만 돌아간다는 의견도 있는데

잘 돌아가는듯?

'프로그래머스 > 파이썬_입문' 카테고리의 다른 글

피자 나눠 먹기(2)  (0) 2024.10.07
피자 나눠 먹기(1)  (0) 2024.10.07
짝수는 싫어요  (0) 2024.10.05
중앙값 구하기  (0) 2024.10.05
나머지 구하기  (0) 2024.10.05