본문 바로가기
코딩테스트

[프로그래머스] 해시 - 폰켓몬

by 박매트 2024. 1. 23.

문제 설명

 

입출력 예

 

 

나의 답.

def solution(nums):
    nums_len = len(nums)/2
    
    dic = {}
    
    for i in nums:
        key = hash(i)
        dic[key]=i
    
    return len(dic) if nums_len > len(dic) else nums_len

 

앞서 풀었던 해시 문제를 떠올려서 풀어보았다.

비교적 간단한 문제인 듯하다.

 

 

dictionary를 쓰니 금방이군..

 

폰켓몬을 고를 수 있는 유형의 최댓값은 주어진 길이를 2로 나눈 값이라고 생각했다.

최댓값보다 작다면, 같은 유형의 값이 존재하다라는 뜻이니까.

값은 값끼리 모아진 dictionary의 길이가 고를 수 있는 유형의 최댓값이라고 생각했다...  

 

다른 사람 풀이

def solution(ls):
    return min(len(ls)/2, len(set(ls)))

 

같은 값끼리 모아질 수 있도록 set함수를 이용할 수 있구나...

set(리스트 값) => 리스트 값 중 중복이 걸러진 리스트 값으로 변환. ㅋㅋ

 

두 수중에 작은 값으로 설정한 것도.

삼항연산자를 사용하지 않고 min으로도 해결할 수 있다는 사실을 깨닫고 간다.

원리는 이번에 비슷하게 접근을 했군..