문제 설명
입출력 예
나의 답.
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으로도 해결할 수 있다는 사실을 깨닫고 간다.
원리는 이번에 비슷하게 접근을 했군..
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 스택 - 같은 숫자는 싫어 (1) | 2024.01.26 |
---|---|
[프로그래머스] 해시 - 전화번호 목록 (1) | 2024.01.24 |
[프로그래머스] 완주하지 못한 선수 (1) | 2024.01.22 |
[코딩테스트] 할 일 목록 (0) | 2024.01.12 |
[코딩테스트] 원하는 문자열 찾기 (0) | 2024.01.12 |