728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1845
def solution(nums):
answer = 0
pd = {}
for n in nums:
if pd.get(n) == None:
pd[n] = 1
else:
pd[n] += 1
print(pd)
#골라야 하는 수
s = len(nums)//2
p = len(pd)
print(s,p)
if s < p :
answer = s
else:
answer = p
return answer
[3,1,2,3] -> {3: 2, 1: 1, 2: 1}
[3,3,3,2,2,4] -> {3: 3, 2: 2, 4: 1}
[3,3,3,2,2,2] -> {3: 3, 2: 3}
이렇게 dictionary로 묶어주어 몇 종의 포켓몽이 몇 마리씩 있는지 만들어 주었다.
이후 N/2 마리를 선택하는 경우의 수 중 만약 종이 3개인데 2마리만 뽑아야 하는 경우는
len(dict)//2로 구하고
N/2마리를 구하는 경우의 수는
len(nums)//2로 구하였다.
만약 N/2마리를 구하는 경우의 수가 N/2마리 종을 선택하는 경우의 수보다 크다면 N/2마리를 구하는 경우의 수를 답으로 하였다.
728x90
'알고리즘' 카테고리의 다른 글
[해시] 프로그래머스: 완주하지 못한 선수(LV1) (0) | 2024.12.02 |
---|---|
위상 정렬(Topology Sort) (0) | 2024.10.28 |