본문 바로가기
스터디/알고리즘

귤고르기

by 세졍 2024. 6. 24.

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))
# 서로 다른 종류의 수의 최솟값 구하기

 

 

 

'스터디 > 알고리즘' 카테고리의 다른 글

디스크 컨트롤러  (1) 2024.07.01
기지국 설치  (0) 2024.06.24
구명보트  (0) 2024.06.24
거스름돈(dp)  (0) 2024.06.23
*지형이동  (0) 2024.06.18