https://school.programmers.co.kr/learn/courses/30/lessons/120812
[문제 설명]
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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
이 곳에서 코드에 대해서 잘 설명해주고 있음
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 |