반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
- 귤의 크기별로 그 개수를 센 딕셔너리를 구성한다.
- 그리고 개수를 기준으로 내림차순 정렬한다.
- 개수가 가장 많은 종류부터 선택하여 k에서 선택한 종류의 개수를 뺀다.
- k가 남았다면 3번을, k가 0이거나 음수가 되면 목표치를 달성한 것이므로 지금까지 선택한 종류의 수를 return 한다.
def solution(k, tangerine):
# 딕셔너리 구성
d = dict()
for i in tangerine:
if i in d:
d[i] += 1
else:
d[i] = 1
# 내림차순 정렬
lst = [i[1] for i in sorted(d.items(), key=lambda x:-x[1])]
# 개수가 많은 귤 부터 상자에 담음
res = 0
for i in lst:
res += 1 # 종류 + 1
k -= i # 귤의 개수만큼 k를 감소
if k <= 0: # k를 달성했으므로 res return
return res
반응형
'알고리즘 연습 > 정렬' 카테고리의 다른 글
[🥈5 / 백준 16435 / 파이썬] 스네이크버드 (0) | 2023.11.27 |
---|---|
[Lv.3 / 프로그래머스 / 파이썬] 인사고과 (0) | 2023.08.23 |
[🥈5 / 백준 25325 / 파이썬] 학생 인기도 측정 (0) | 2023.01.24 |
[🥈5 / 백준 11931 / 파이썬] 수 정렬하기 4 (0) | 2022.11.07 |
[🥉2 / 백준 25305 / 파이썬] 커트라인 (0) | 2022.08.12 |