프로그래머스 알고리즘 고득점 Kit - 해시 - 폰켓몬

문제 풀이

일단 문제 자체가 엄청 긴데 원하는 조건을 요약하자면

1. 최대한 많은 포켓몬 종류를 가져간다

2. 가져갈 수 있는 포켓몬의 수는 n/2 이다

 

이 조건을 만족시키기 위해 일단

1. pocket이라는 딕셔너리를 만들고 종류별로 몇마리나 있는지 파악

2. check라는 set을 만들어 어떤 포켓몬을 데려갔는지 파악(최대한 많은 종류를 데려가기 위해 확인용)

3. pocket을 순회하면서 check에 없는 종류의 포켓몬이고 아직 n/2마리까지 데려가지 않았다면 answer에 +1을 해주고 그게 아니라면 넘어감

 

def solution(nums):
    answer = 0
    pocket = {}
    check = set()
    for i in nums:
        pocket[i] = pocket.get(i, 0) + 1
    
    for no, cnt in pocket.items():
        if no not in check and answer < len(nums)/2:
            check.add(no)
            answer += 1
            
    return answer

 

반응형