알고리즘

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

j9972 2023. 7. 13. 13:52
728x90

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

1. 나는 dict() 을 통해서 귤의 크기에 따라서 개수를 내림 차순 정렬을 하고 k랑 cnt의 개수를 비교해서 ans를 구했다

: dict() -> 내림차순 정렬 -> value값 만큼 cnt를 증가시켜서 k랑 비교 -> ans 도출

2. Counter() 라는 메소드를 사용하면 dict() 없이도 가능하다,,,

 

3. 풀이

# dict()을 사용한 방법
def solution(k, t):
    cnt = 0
    ans = 0
    
    dic = {}
    for i in t:
        if i not in dic:
            dic[i] = 1
        else:
            dic[i] += 1
    
    sorted_dic = sorted(dic.items(), key=lambda x: x[1], reverse=True)
    
    
    for i in sorted_dic:
        cnt += i[1]
        ans += 1
        if cnt >= k:
            break
    
    return ans

# dict()을 쓰지 않고 Counter() 사용해서 풀기
import collections
def solution(k, tangerine):
    answer = 0
    cnt = collections.Counter(tangerine)

    for v in sorted(cnt.values(), reverse = True):
        k -= v
        answer += 1
        if k <= 0:
            break
    return answer