[프로그래머스] 귤 고르기

kiki·2024년 1월 5일
0

프로그래머스

목록 보기
42/76

문제 링크

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

문제 설명

  • 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어진다.
  • 귤 k개를 고를 때 크기가 서로 다른 종류의 수의 최솟값을 return하라

1차 시도

결국엔 귤의 크기에 따라 갯수를 세야겠다는 생각이 들었는데 Counter를 쓰면 한 줄로 쓸 수 있다.

from collections import Counter

def solution(k, tangerine):
    cnt = Counter(tangerine).most_common()
    tmp = 0
    for n, i in enumerate(cnt):
        tmp+=i[1]
        if tmp>=k:
            return n+1

Counter에서 value 기준으로 정렬하는 게 안떠올라 찾아보긴했다 ㅎㅎ
오 근데 내림차순으로 정렬되네? 그건 신기하군 (아하 정렬을 위한 함수는 아니고 최빈값, 말그대로 most common을 구하는 함수여서 내림차순으로 정렬되는 거구나. most_common(2)하면 최빈값 2개가 출력된다.)
정렬하고 순서대로 누적해 k를 넘는지 확인했다.

정리

  • Counter: collections 라이브러리에서 임포트 가능하다. 그리고 value 기준으로 내림차순 정렬(최빈값 구하기)하기 위해선 Counter 객체에 most_commont() 을 쓰면 된다.

0개의 댓글