취뽀 기록

#열심히 살자 #취업 #공부

Python/[프로그래머스]

[Level 2] 귤 고르기(★)

hyunnn_00 2024. 4. 19. 22:10

 

간단해보이는데 너무 어려웠다.. 오랜만에 코테 공부해서 그런가?

def solution(k, tangerine):
    answer = 0
    check = 0
    dict = {}
    
    for num in tangerine:
        if num in dict:
            dict[num] += 1
        else:
            dict[num] = 1
    
    arr = sorted(dict.items(), key = lambda x:x[1], reverse = True)
    
    if arr[0][1] >= k:
        return 1
    else:
        for i in arr:
            if check < k:
                check += i[1]
                answer += 1
            else:
                break
    return answer

 

흐름은 이렇다. 

1. 우선 dict라는 딕셔너리를 만들어서 각 귤의 크기와 개수를 담는다.

2. arr라는 튜플?을 만들어서 순서대로 정렬

-> ((3,2), (4,1)) 이런식으로 만들어짐 (value값 기준으로 내림차순 정렬)

3. 이 arr의 첫번째 값이 만약 k보다 크면 return 1

    ㄴ 한 상자에 담아야되는데 k개를 고르는데 하나에 모두 담기면 당연히 다른 종류는 1개임

4. 그 외에는 arr를 돌면서 check 라는 변수에 이게 k보다 작으면 chek변수에 이 key값을 담아줌

    ㄴ key값을 담으면 그만큼 check에  그 개수만큼 담김 (이게 결국 k개 골라야 하니까 k까지 갖춰줘야된다)

5. answer 변수에는 1개씩 늘려줌 (종류가 1개씩 추가되므로)

 

이렇게 흐름 정리를 하면 이해가 되긴 하는데, 내 머릿속에서 나오기는 좀 힘든 것 같다. 

 

<문법 정리>

1. dict 함수

2. sorted 함수 (key인자를 이용하면, 정렬 순서 조정 가능)

3. item 함수(key, values값 포함)

 

까먹지 말자!!!!!!!!!!