코딩테스트
[프로그래머스] 해시 - 폰켓몬
박매트
2024. 1. 23. 22:32
문제 설명
입출력 예
나의 답.
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으로도 해결할 수 있다는 사실을 깨닫고 간다.
원리는 이번에 비슷하게 접근을 했군..