알고리즘

[해시] 프로그래머스: 포켓몬(LV1)

teon98 2024. 12. 2. 03:34
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

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