문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
문제를 정리하자면 K개를 제외하고 골랐을 때 서로 다른 종류의 귤이 최소가 될 수 있도록 하는 것이다.
즉, 중복이 되게끔 최대한 판매를 한다면 서로 다른 종류가 최소가 될 것이다.
그렇기에 각 갯수를 셀 수 있도록 해주고 거기서 k개가 될 수 있도록 한다.
파이썬에서는 dict를 이용해서 풀이를 진행한다면 수를 세기에 편하다.
정답코드
더보기
'''
'25. 08. 15
1. k개를 골라서 상자 하나에 담아 판매한다.
2. 귤을 크기별로 분류 -> 서로 다른 종류의 수를 최소화한다.
정리하면 len(tangerine)Ck 서로 다른 종류가 최소
즉, 중복이 되게 해서 갯수를 줄여라가 포인트가 될 것이다.
그러면 각 번호와 갯수를 구해서 내림차순으로 나열하고 k개를 고르면 되겠다.
'''
def solution(k, tangerine):
answer = 0
new_dict = {}
for num in tangerine:
new_dict[num] = new_dict.get(num, 0) + 1
#(key, value)
new_list = sorted(new_dict.items(), key=lambda x:(-x[1]))
for i in range(len(new_list)):
answer += 1
if k - new_list[i][1] <= 0:break
k -= new_list[i][1]
return answer
깃허브 : https://buly.kr/EooRDuV
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / 정수론 / N개의 최소공배수 (0) | 2025.08.15 |
|---|---|
| 프로그래머스 / DP / 멀리 뛰기 (0) | 2025.08.15 |
| 프로그래머스 / greedy / 구명보트 (0) | 2025.08.15 |
| 프로그래머스 / 정수론 / 점프와 순간 이동 (0) | 2025.08.12 |
| 프로그래머스 / 완전탐색 / 카펫 (0) | 2025.08.10 |