240710 TIL #447 CT_귤고르기

김춘복·2024년 7월 9일
0

TIL : Today I Learned

목록 보기
447/571

Today I Learned

오늘은 파이썬의 Counter를 사용해서 문제를 해결해보았다.


CT_귤고르기

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

문제

수확한 귤의 크기가 리스트 tangerine에 담겨온다. 이중에서 k개의 귤을 한 상자에 골라내려 한다. 단, 귤 크기의 종류가 최소가 되게 하고 싶을 때, 귤 크기 종류의 수를 return해라.
1 ≤ k ≤ tangerine의 길이 ≤ 100,000
1 ≤ tangerine의 원소 ≤ 10,000,000


풀이 과정

  • 문제를 보자마자 시간 복잡도는 일단 차치하고 파이썬 자료구조 중 Counter를 사용하면 간단하게 문제가 풀리지 않을까 생각했다.

  • Counter를 import 해준다. tangerine을 Counter로 선언해준다.

  • most_common() 함수는 카운터에서 가장 빈도가 높은 요소들을 빈도와 함께 튜플 형태로 반환해준다. 파라미터로 int값을 넣으면 상위 몇가지만 알려주지만 이 문제에선 다 아는게 더 풀기 쉬워 파라미터 없이 진행했다.

  • 해당 리스트를 for n, f in most_common:으로 순회해서 k값에서 빼주면서 종류를 카운트하면 완료!

  • 만약 카운터를 쓰지않으면 dict를 만들어 tangerine을 순회하면서 freqent를 측정해주는 방식으로 진행하면 된다.


Python 코드

from collections import Counter

def solution(k, tangerine):
    answer = 0
    c = Counter(tangerine)
    
    most_common = c.most_common()
    for n, f in most_common:
        if k > 0:
            answer += 1
            k -= f
    
    return answer
profile
Backend Dev / Data Engineer

0개의 댓글