[프로그래머스] 귤 고르기 python | Counter 함수로 dic 생성하기

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

 

프로그래머스

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

programmers.co.kr


이름이 귀여워서 선택한 귤 고르기 

 

아래처럼 답을 적었는데

def solution(k, tangerine):
    dic = {}
    for t in tangerine :
        if t in dic:
            dic[t] += 1
        else : dic[t] = 1
    
    l = sorted(list(dic.values()),reverse=True)
    type_idx = 0
    cnt = 0
    for t in l :
        type_idx += 1
        cnt += t
        if(cnt >= k):
            print(type_idx)
            return type_idx

 

 

 

 

python 의 Counter함수를 사용하면 일일이 dictionary 를 초기화하지 않아도 됐다.

from collections import Counter

 

사용하면 아래와 같은 코드

from collections import Counter

def solution(k, tangerine):
   l = sorted(Counter(tangerine).values(),reverse=True)
   cnt = 0
   for i,v in enumerate(l) :
    cnt += v
    if (cnt >= k): return i+1

 


여기서 Counter를 써보면 아래와 같이 Counter 타입으로 출력된다.

print(Counter(tangerine))
Counter({3: 2, 2: 2, 5: 2, 1: 1, 4: 1})

 

이것을 list 함수를 사용하여 바로 list로 변환했을 때는 key들을 모아 list로 만든 뒤 출력된다.

print(list(Counter(tangerine)))
[1, 3, 2, 5, 4]