알고리즘 연습/정렬

[Lv.2 / 프로그래머스 / 파이썬] 귤 고르기

김세진 2025. 5. 2. 17:28
반응형

 

 

 

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

풀이

 

  1. 귤의 크기별로 그 개수를 센 딕셔너리를 구성한다.
  2. 그리고 개수를 기준으로 내림차순 정렬한다.
  3. 개수가 가장 많은 종류부터 선택하여 k에서 선택한 종류의 개수를 뺀다.
  4. k가 남았다면 3번을, k가 0이거나 음수가 되면 목표치를 달성한 것이므로 지금까지 선택한 종류의 수를 return 한다.

 

def solution(k, tangerine):
    # 딕셔너리 구성
    d = dict()
    for i in tangerine:
        if i in d:
            d[i] += 1
        else:
            d[i] = 1
    
    # 내림차순 정렬
    lst = [i[1] for i in sorted(d.items(), key=lambda x:-x[1])]
    
    # 개수가 많은 귤 부터 상자에 담음
    res = 0
    for i in lst:
        res += 1 # 종류 + 1
        k -= i # 귤의 개수만큼 k를 감소
        if k <= 0: # k를 달성했으므로 res return
            return res

 

 

 

반응형