[알고리즘] 프로그래머스 귤 고르기 파이썬

SCY·2023년 10월 17일
0

Algorithm

목록 보기
9/9
post-thumbnail

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

문제

나의 풀이

나의 아이디어는 tangerine에 들어있는 개수가 최소인 원소를 차례차례 제거하는 방식이었다.

from collections import Counter

def solution(k, tangerine):
    cnt_list = sorted(Counter(tangerine).items(), key=lambda x:x[1])
    sort_t = []
    for item in cnt_list:
        sort_t.extend([item[0]] * item[1])
    return len(set(sort_t[len(tangerine) - k:]))

다른 풀이

나의 아이디어와 반대로 tangerine에 들어있는 개수가 최대인 원소부터 k개 뽑는 방식.
lambda를 활용해 tangerine 자체를 정렬하기에 나의 sort_t와 같은 추가 메모리가 불필요하다.

from collections import Counter

def solution(k, tangerine):
    counter = Counter(tangerine)
    tangerine.sort(key = lambda t: (-counter[t], t))
    return len(set(tangerine[:k]))

얻어가기

Counter()를 정렬하는 방법

  • Counter().most_common()
  • Counter().items().sort()
profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

0개의 댓글