프로그래머스 Level 1 | 폰켓몬 | Python

tomkitcount·2025년 9월 30일

알고리즘

목록 보기
192/304

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


문제 파악

문제가 조금 길어서 파악하기 어려울 수 있는데 핵심 요지는
nums 배열이 주어진다. 이떄 nums의 길이는 항상 짝수이다.
즉 2로 나누어 떨어지는데,
나는 여기 배열의 길이에서 2를 나눈 값 만큼 번호를 선택할 것이다.
그런데 최대한 다양한 숫자의 번호를 고르고 싶다.
이때 내가 고를 수 있는 가장 번호 종류의 개수를 return 하는 문제이다.


예시

nums[3,1,2,3] 가 주어졌을 때,
나는 len(nums) / 2 인 2개를 고를 것인데, 가질 수 있는 가장 다양한 숫자의 종류의 개수는?

= 2


해결 아이디어

nums 배열을 set() 에 집어넣어서 중복을 없앤다.
[3,1,2,3] 은
set_nums = set(3,1,2) 가 되겠지?

그러면 len(nums)/2 < len(set_nums) 라면,

정답은 len(nums)/2가 된다.

그렇지 않다면
정답은 len(set_nums) 이 된다.

해답 및 풀이

def solution(nums):
    set_nums = set(nums)
    
    answer = 0 
    
    if len(nums) // 2 < len(set_nums):
        answer = len(nums) // 2
        
    else:
        answer = len(set_nums)
    
    return answer     
    
profile
To make it count

0개의 댓글