https://school.programmers.co.kr/learn/courses/30/lessons/138476#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
첫 풀이
1. 귤 개수를 추가할 딕셔너리 만들고 value 추가하기
2. 귤 개수인 value로 내림차순 정렬
3. 귤 개수 더해가며 k개 맞추기
def solution(k, tangerine):
answer = 0
dic={} #딕셔너리 만들기
for i in list(set(tangerine)):
dic[i]=0
for i in tangerine: # 숫자만큼 딕셔너리 추가
dic[i]+=1
dic=sorted(dic.items(),key=lambda x:x[1],reverse=True)
cnt=0
for i in dic: #정렬된 딕셔너리로 귤 개수 맞추기
if cnt+i[1]<k:
cnt+=i[1]
answer+=1
elif cnt+i[1]==k:
return answer+1
else:
return answer+1
더 나은 답안
1. 귤 개수를 추가할 딕셔너리 만들고 value 추가하기 -> Counter() 사용
2. 귤 개수 더해가며 k개 맞추기 -> 빼가며 맞추기
from collections import Counter
def solution(k, tangerine):
answer = 0
counter=Counter(tangerine)
# {3: 2, 2: 2, 5: 2, 1: 1, 4: 1}
sort_=sorted(counter.items(),key=lambda x:x[1],reverse=True)
#정렬된 딕셔너리로 귤 개수 맞추기
cnt=0
for i in sort_:
k-=i[1]
answer+=1
if k<=0:
break
return answer
배운 점
1. Counter() 사용하면 개수만큼 딕셔너리 형태로 제공
2. 개수를 찾을때 더하는 방식보다 빼는 방식이 구현하기 간단함
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 문제풀이 - 최고의 집합 (0) | 2023.01.13 |
---|---|
[프로그래머스] 파이썬 문제풀이 - 정수 삼각형 (0) | 2023.01.13 |
[프로그래머스] SQL 문제풀이 - 주문량이 많은 아이스크림들 조회하기 (0) | 2023.01.06 |
[프로그래머스] SQL 문제풀이 - 5월 식품들의 총매출 조회하기 (0) | 2023.01.06 |
[프로그래머스] SQL 문제풀이 - 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.01.05 |
댓글