k개의 귤을 담을때 크기의 종류가 최소가 될수있게 담을때
귤종류의 최솟값 구하기
1. 각 귤 크기별로 몇개인지 담는다 { 1 :2 } 1이 두개 이런식으로
2. 개수가 많은 순으로 내림차순해서 정렬한다
3. 귤의 개수와 종류 => 두개의 변수생성해서 k개와 비교하기
<처음실패한코드> -개수와 종류 두개를 안셈
def solution(k,tangerine):
graph = {}
for i in tangerine:
if i not in graph:
graph[i] = 1
else:
graph[i] += 1
graph = sorted(graph.items(),key=lambda x:x[1],reverse=True)
cnt = 0
for i in graph:
if i[1] <= k:
cnt += 1
k -= i[1]
return cnt
k = 2 # 상자에 담으려는 귤의 개수
tangerine = [1, 1, 1, 1, 2, 2, 2, 3]
print(solution(k,tangerine))
# 서로 다른 종류의 수의 최솟값 구하기
<성공코드>
def solution(k,tangerine):
graph = {}
for i in tangerine:
if i not in graph:
graph[i] = 1
else:
graph[i] += 1
graph = sorted(graph.items(),key=lambda x:x[1],reverse=True)
type = 0
cnt = 0
for i in graph:
cnt += i[1]
type += 1
if cnt >= k
return type # 담은개수가 k개 이상일때 멈추고 종류 출력
k = 2 # 상자에 담으려는 귤의 개수
tangerine = [1, 1, 1, 1, 2, 2, 2, 3]
print(solution(k,tangerine))
# 서로 다른 종류의 수의 최솟값 구하기