Python/[프로그래머스]
[Level 2] 귤 고르기(★)
hyunnn_00
2024. 4. 19. 22:10
간단해보이는데 너무 어려웠다.. 오랜만에 코테 공부해서 그런가?
def solution(k, tangerine):
answer = 0
check = 0
dict = {}
for num in tangerine:
if num in dict:
dict[num] += 1
else:
dict[num] = 1
arr = sorted(dict.items(), key = lambda x:x[1], reverse = True)
if arr[0][1] >= k:
return 1
else:
for i in arr:
if check < k:
check += i[1]
answer += 1
else:
break
return answer
흐름은 이렇다.
1. 우선 dict라는 딕셔너리를 만들어서 각 귤의 크기와 개수를 담는다.
2. arr라는 튜플?을 만들어서 순서대로 정렬
-> ((3,2), (4,1)) 이런식으로 만들어짐 (value값 기준으로 내림차순 정렬)
3. 이 arr의 첫번째 값이 만약 k보다 크면 return 1
ㄴ 한 상자에 담아야되는데 k개를 고르는데 하나에 모두 담기면 당연히 다른 종류는 1개임
4. 그 외에는 arr를 돌면서 check 라는 변수에 이게 k보다 작으면 chek변수에 이 key값을 담아줌
ㄴ key값을 담으면 그만큼 check에 그 개수만큼 담김 (이게 결국 k개 골라야 하니까 k까지 갖춰줘야된다)
5. answer 변수에는 1개씩 늘려줌 (종류가 1개씩 추가되므로)
이렇게 흐름 정리를 하면 이해가 되긴 하는데, 내 머릿속에서 나오기는 좀 힘든 것 같다.
<문법 정리>
1. dict 함수
2. sorted 함수 (key인자를 이용하면, 정렬 순서 조정 가능)
3. item 함수(key, values값 포함)
까먹지 말자!!!!!!!!!!