간단해보이는데 너무 어려웠다.. 오랜만에 코테 공부해서 그런가?
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값 포함)
까먹지 말자!!!!!!!!!!
'Python > [프로그래머스]' 카테고리의 다른 글
[Level 1] 서울에서 김서방 찾기 (1) | 2024.04.19 |
---|---|
[프로그래머스][Level 2] 최댓값과 최솟값 (0) | 2024.04.02 |
[프로그래머스][Level 2] 짝지어 제거하기 (0) | 2023.08.27 |
[프로그래머스][Level 2] 전화번호 목록 (0) | 2023.08.19 |
[프로그래머스][Level 2] 피보나치 수 (0) | 2023.08.19 |