카테고리 없음

[프로그래머스/Python] 최빈값 구하기

왕초보코딩러 2024. 1. 11. 16:01
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

가장 많이 들어 있는 숫자를 리턴. 똑같이 많으면 -1 리턴


1. 딕셔너리 사용

딕셔너리 value로 sort()

딕셔너리의 .items() 이용

.items()를 다시 list로 바꾼다(튜플 형태로 리스트에 저장된다)

sort()를 사용한다. key = lambda x:x[1] 파라미터를 사용

 

def solution(array):
    dic = {}
    for i in set(array):
        dic[i] = array.count(i)
    
    #value가 큰 것부터 sort()
    arr = list(dic.items())
    arr.sort(key=lambda x:x[1], reverse = True)
    
    #값이 하나밖에 없을 때
    if len(arr) == 1:
        return arr[0][0]
    #최빈값이 같은 게 있는지 확인
    if arr[0][1] != arr[1][1]:
        return arr[0][0]
    return -1

 

2. Counter 사용

Counter 객체 라이브러리

from collections import Counter

 

Counter 객체

각 원소가 몇 번씩 나오는지 세어 준다

 

Counter 객체 생성

new_counter = Counter(문자열 / 리스트)

 

Counter 객체 -> 딕셔너리

dict() 해주기

#Counter 객체
print(Counter([1,2,1,3,5,2,2,7]))	#Counter({2: 3, 1: 2, 3: 1, 5: 1, 7: 1})

#딕셔너리
print(dict(Counter([1,2,1,3,5,2,2,7])))		#{1: 2, 2: 3, 3: 1, 5: 1, 7: 1}

 

Counter 내장 함수

.most_common() : 데이터의 개수가 많은 순으로 정렬

 

https://www.daleseo.com/python-collections-counter/

 

파이썬 collections 모듈의 Counter 사용법

Engineering Blog by Dale Seo

www.daleseo.com

 

Counter 객체끼리

더하기 +

빼기 -

합집합 |

교집합 & 

가능

https://hongl.tistory.com/35

 

collections 모듈 (2) - Counter

Counter는 주어진 리스트, 문자열 등의 원소의 빈도 값을 "원소:빈도수"로 return하는 dict의 하위 클래스입니다. 빈도 수를 셀 일이 있을 때 사용하면 매우 유용합니다. Counter 메소드 Counter에는 다음

hongl.tistory.com

 

 

from collections import Counter
def solution(array):
    array = (Counter(array).most_common())
    
    if len(array) == 1:
        return array[0][0]
    if array[0][1] == array[1][1]:
        return -1
    return array[0][0]