-
[Programmers] 귤 고르기 _Python알고리즘/프로그래머스 2022. 11. 26. 00:02728x90반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
풀이
from collections import Counter def solution(k, tangerine): answer = 0 # [1] 자료 변환 count = sorted(Counter(tangerine).items(),reverse = True, key = lambda x : x[1]) # [2] 최소 종류 계산 for key, value in count: if k <= 0: break k -= value answer += 1 return answer
어려운 부분 설며
count = sorted(Counter(tangerine).items(),reverse = True, key = lambda x : x[1])
- Counter() 를 통해 귤 크기에 해당하는 귤의 개수를 딕셔너리 자료구조로 반환 받습니다.
- 딕셔너리의 items() 메서드를 통해 key 와 value 값을 튜플 형식으로 반환받습니다.
- sorted() 정렬 메서드를 통해 value 값을 기준(key = lambda x : x[1]) 내림차순(reverse = True)으로 정렬합니다.
Counter 기본 사용법
collections 모듈의 Counter 클래스는 별도 패키지 설치 없이 파이썬만 설치되어 있다면 다음과 같이 임포트해서 바로 사용할 수 있습니다.
from collections import Counter
Counter 생성자는 여러 형태의 데이터를 인자로 받는데요. 먼저 중복된 데이터가 저장된 배열을 인자로 넘기면 각 원소가 몇 번씩 나오는지가 저장된 객체를 얻게 됩니다.
>>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"]) Counter({'hi': 3, 'hey': 2, 'hello': 1})
Counter 생성자에 문자열을 인자로 넘기면 각 문자가 문자열에서 몇 번씩 나타나는지를 알려주는 객체가 반환됩니다.
>>> Counter("hello world") Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
Counter를 사전처럼 사용하기
collections 모듈의 Counter 클래스는 파이썬의 기본 자료구조인 사전(dictionary)를 확장하고 있기 때문에, 사전에서 제공하는 API를 그대로 다 시용할 수가 있습니다.
예를 들어, 대괄호를 이용하여 키로 값을 읽을 수 있고요.
counter = Counter("hello world") counter["o"], counter["l"]
(2, 3)
파이썬 딕셔너리 키, 값 쌍 얻기 - items()
딕셔너리의 키, 값 쌍 얻기 - items()
딕셔너리(dictionary)는 items()함수를 사용하면 딕셔너리에 있는 키와 값들의 쌍을 얻을 수 있습니다.
>>> car = {"name" : "BMW", "price" : "7000"} >>> car.items() dict_items([('name', 'BMW'), ('price', '7000')])
items함수를 사용하면 딕셔너리의 값을 반복할때 키와 값을 접근하기가 매우 유용해집니다.>>> car = {"name" : "BMW", "price" : "7000"} >>> for key, val in car.items(): ... print("key : {} value : {}".format(key,val)) key : name value : BMW key : price value : 7000
LIST'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 문자열 나누기 _Python (0) 2022.12.02 [Programmers] 삼총사 _Python (2) 2022.12.01 [Programmers] 햄버거 만들기 _Python (1) 2022.11.24 [Programmers] 푸드 파이트 대회 _Python (0) 2022.11.24 [Programmers] 숫자 카드 나누기 _Python (0) 2022.11.23