카테고리 없음
[프로그래머스 LV2] 귤 고르기
이경찬 :)
2023. 12. 7. 22:29
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근방법
먼저 시간복잡도를 생각해보았다
100,000 10^5 이면 O(n^2)으로는 문제를 풀 수 없다.
흠..그렇다면 N이나 nlog(n)으로 문제를 풀어야 겠다.
입출력 예시를 봐보자.
보아하니 가장 종류가 많은것부터 순서대로 뽑아서 내가 원하는 값(k)가 되면된다.
풀이 구상:
파이썬의 딕셔너리로 해당크기의 갯수를 적어두고 value값을 기준으로 sorted한 다음 위에서부터 K값을 빼고
혹시나 K가 0이나 그 이하가 된다면 그게 result
def solution(k, tangerine):
answer = 0
memo = {}
# 전부 돌아서 memo에 적어준다
for i in tangerine:
if i not in memo:
memo[i] = 1
else:
memo[i] += 1
# value값을 기준으로 sorted해준다
result_dic = sorted(memo.items(), key = lambda item : item[1], reverse = True)
for i in result_dic:
answer += 1
k -= i[1]
if k <= 0:
break
return answer
sorted해주는 부분이 낯설었다.
문제 접근은 비교적 쉬운 문제였다!