[프로그래머스][Python] 귤 고르기

Eunding·2024년 3월 27일

algorithm

목록 보기
4/110

오늘의 회고

오늘은 프로그래머스의 귤 고르기문제를 풀면서 dictionary key나 value로 정렬하는 방법을 공부했다.

시도한 것


먼저 defaultdict를 이용해서 key는 크기로, value는 그 크기 개수대로 딕셔너리를 만들어준 후
딕셔너리의 value 값으로 내림차순 정렬해주고 싶었는데 반복문으로 하다가 더 좋은 방법이 있을 것 같아 찾아봤다.

해결 방법

sorted 함수의 key 파라미터는 어떤 것을 기준으로 정렬할 것인지를 정해준다.
즉, key 값을 기준으로 비교를 하여 정렬을 하는 것이다.
key의 0번째 index는 key, 1번째 index는 value가 된다.
아래 예시 모두 반환하면 딕셔너리가 리스트 형태가 된다.

Key 값으로 오름차순 정렬

dict = sorted(dict.items(), key= lambda x:x[0])

Key 값으로 내림차순 정렬

# 방법1) -를 붙여줌
dict = sorted(dict.items(), key= lambda x:-x[0])

# 방법2) reverse를 붙여줌
dict = sorted(dict.items(), key= lambda x:x[0], reverse=True)

Value 값으로 오름차순 정렬

dict = sorted(dict.items(), key= lambda x:x[1])

Value 값으로 내림차순 정렬

# 방법1) -를 붙여줌
dict = sorted(dict.items(), key= lambda x:-x[1])

# 방법2) reverse를 붙여줌
dict = sorted(dict.items(), key= lambda x:x[1], reverse=True)

'귤 고르기'의 정답 코드

from collections import defaultdict
def solution(k, tangerine):
    answer = 0
    dict = defaultdict(int)
    for i in range(len(tangerine)):
        dict[tangerine[i]] += 1
    
    dict = sorted(dict.items(), key= lambda x:-x[1]) # idx 0은 key, 1은 value
    
    cnt = 0
    for i in range(len(dict)):
        cnt += dict[i][1]
        if cnt >= k: 
            answer = i+1
            break
    
    return answer

0개의 댓글