본문 바로가기

Algorithm/Sorting

(Python3) - 프로그래머스(연습문제): 귤 고르기

반응형

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

 

프로그래머스

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

programmers.co.kr

정렬 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 정답 변수를 선언 하고 0으로 초기화합니다.

 

2. 귤 크기와 개수를 저장할 tangerine_map을 선언 후 적절히 초기화합니다.

 

3. 귤의 개수에 대해 내림차순으로 정렬해줍니다.

* k이상 개수만큼 담기만하면 되므로 최소의 종류로 담기 위해서는 해당 정렬이 필요합니다.

📔 풀이과정

여태 담은 귤의 개수 sum을 선언 후 0으로 초기화합니다. tangerine_map의 원소에 대해 순회하며 다음을 진행합니다.1. 귤 종류가 증가했으므로 answer를 1증가시켜줍니다.

 

2. 해당 귤의 개수를 sum에 누적해 더해줍니다.

* k개수 이상이라면 논리적으로 k개에 딱 맞게 담으면 되며 이는 answer값과 무관하므로 그냥 더해줍니다.

 

3. k이상이라면 break해줍니다.

📔 정답 출력 | 반환

answer를 반환합니다.


📕 Code

📔 Python3

def solution(k, tangerine):
    answer = 0
    tangerine_map = {}
    for t in tangerine:
        tangerine_map[t] = tangerine_map.get(t,0) + 1
    tangerine_map = sorted(tangerine_map.items(), key = lambda x: x[1], reverse=True)
    sum = 0
    for _, num in tangerine_map:
        answer += 1
        sum += num
        if sum >= k:
            break
    
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.