알고리즘/프로그래머스

[프로그래머스 | Lv2] 귤 고르기 (Python)

sssbin 2023. 1. 31. 14:39

 

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

 

프로그래머스

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

programmers.co.kr

 

 

# 프로그래머스 138476: 귤 고르기

def solution(k, tangerine):
    dic = {}
    for i in tangerine:
        try: dic[i] += 1
        except: dic[i] = 1
    dic = dict(sorted(dic.items(), key=lambda x:x[1]))
    
    n = len(tangerine) - k
    cnt = len(dic)
    i = 0
    
    for key in dic:
        i += dic[key]
        if i < n:
            cnt -= 1
        elif i == n:
            return cnt - 1
        else:
            return cnt
테스트 1 통과 (14.81ms, 13.2MB)
테스트 2 통과 (11.53ms, 13.2MB)
테스트 3 통과 (10.17ms, 13.4MB)
테스트 4 통과 (12.05ms, 13MB)
테스트 5 통과 (16.84ms, 11.2MB)
테스트 6 통과 (16.76ms, 11.4MB)
테스트 7 통과 (11.87ms, 12.2MB)
테스트 8 통과 (9.55ms, 11.8MB)
테스트 9 통과 (12.12ms, 11.6MB)
테스트 10 통과 (14.29ms, 12.8MB)
테스트 11 통과 (0.02ms, 10.1MB)
테스트 12 통과 (0.01ms, 10.1MB)
테스트 13 통과 (0.01ms, 10.3MB)
테스트 14 통과 (0.01ms, 10.2MB)
테스트 15 통과 (0.01ms, 9.98MB)
테스트 16 통과 (0.01ms, 10.1MB)
테스트 17 통과 (0.01ms, 10.2MB)
테스트 18 통과 (0.01ms, 10.2MB)
테스트 19 통과 (0.01ms, 10.1MB)
테스트 20 통과 (0.02ms, 10.2MB)
테스트 21 통과 (0.23ms, 10.2MB)
테스트 22 통과 (0.73ms, 10.5MB)
테스트 23 통과 (0.56ms, 10.4MB)
테스트 24 통과 (0.78ms, 10.5MB)
테스트 25 통과 (6.42ms, 11.7MB)
테스트 26 통과 (19.90ms, 13.6MB)
테스트 27 통과 (73.72ms, 35.6MB)
테스트 28 통과 (40.32ms, 20.4MB)
테스트 29 통과 (45.85ms, 25.7MB)
테스트 30 통과 (77.48ms, 35.5MB)
테스트 31 통과 (9.89ms, 12.4MB)
테스트 32 통과 (11.69ms, 13.8MB)
테스트 33 통과 (78.43ms, 26.7MB)
테스트 34 통과 (56.12ms, 25.7MB)

 

통과는 했지만 좀 지저분하게 풀었는데,, 다들 넘 깔끔하게 풀어서 놀랐다

tangerine의 요소 개수가 저장되어 있는 딕셔너리를 만든 부분 -> collections 모듈의 Counter 클래스로 만들 수 있음

나는 value 값으로 정렬한 딕셔너리를 또 하나 만들었는데 -> 그냥 value 값으로 정렬한 리스트만 있으면 됨

개수 판별하는 부분도 다들 더 깔끔한 방법 써서 푸시던데 생각하기 힘들어서(^^..) 그냥 내가 썼던 알고리즘 거의 그대로 썼다!

 

# 프로그래머스 138476: 귤 고르기

from collections import Counter

def solution(k, tangerine):
    tan = sorted(Counter(tangerine).values())
    answer = len(tan)
    n = len(tangerine) - k
    
    for i in tan:
        if i < n:
            answer -= 1
            n -= i
        elif i == n:
            return answer - 1
        else:
            return answer
테스트 1 통과 (5.41ms, 13.1MB)
테스트 2 통과 (9.16ms, 13.2MB)
테스트 3 통과 (9.38ms, 13.5MB)
테스트 4 통과 (6.28ms, 13.1MB)
테스트 5 통과 (4.46ms, 11.2MB)
테스트 6 통과 (5.05ms, 11.3MB)
테스트 7 통과 (5.99ms, 12.6MB)
테스트 8 통과 (10.49ms, 11.8MB)
테스트 9 통과 (4.91ms, 11.6MB)
테스트 10 통과 (6.09ms, 13MB)
테스트 11 통과 (0.04ms, 10.4MB)
테스트 12 통과 (0.03ms, 9.95MB)
테스트 13 통과 (0.02ms, 10.3MB)
테스트 14 통과 (0.02ms, 9.95MB)
테스트 15 통과 (0.03ms, 9.95MB)
테스트 16 통과 (0.02ms, 10.1MB)
테스트 17 통과 (0.02ms, 10.2MB)
테스트 18 통과 (0.02ms, 9.96MB)
테스트 19 통과 (0.03ms, 10.1MB)
테스트 20 통과 (0.02ms, 10.1MB)
테스트 21 통과 (0.07ms, 9.9MB)
테스트 22 통과 (0.15ms, 10.1MB)
테스트 23 통과 (0.19ms, 10.2MB)
테스트 24 통과 (0.19ms, 10.4MB)
테스트 25 통과 (2.01ms, 11MB)
테스트 26 통과 (3.41ms, 11.5MB)
테스트 27 통과 (14.67ms, 21.8MB)
테스트 28 통과 (14.78ms, 16.2MB)
테스트 29 통과 (14.21ms, 17.9MB)
테스트 30 통과 (17.43ms, 21.9MB)
테스트 31 통과 (6.27ms, 12.7MB)
테스트 32 통과 (6.15ms, 13.6MB)
테스트 33 통과 (15.97ms, 18.1MB)
테스트 34 통과 (19.05ms, 17.9MB)

 

ㅠㅠ