Python/Programmers

Lv.1-폰켓몬

JAEJUNG 2021. 7. 7. 00:50

문제

총 N개의 폰켓몬 중 가져갈 수 있는 폰켓몬의 최대 개수는 N/2

최대한 다양한 수의 폰켓몬을 가져가야 한다.

N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때,

N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아,

그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.

 

내 코드

from itertools import combinations

def solution(nums):
    maxSelect = len(nums)/2
    data = set()
    for num in nums:
        if len(data) < maxSelect:
            data.add(num)
    return len(data)

 

문제 풀이

최대 가져갈 수 있는 폰켓몬 수는 n/2개이니까,

중복을 포함하지 않은 data의 개수가 n/2을 넘어가지 않을 때까지 add해준다.

✅data를 set 자료형으로 초기화시켰기 때문에 add 시 중복값이 저장되지 않는다.

 

고수 풀이

최대 가져갈 수 있는 폰켓몬 수와 중복을 제거한 개수 중 더 작은 값 가져가기

(어차피 n/2를 넘게 못 가져가니까)

return min(len(nums)/2, len(set(nums)))

'Python > Programmers' 카테고리의 다른 글

Lv.1-음양 더하기  (0) 2021.07.07
Lv.1-소수 찾기  (0) 2021.07.07
Lv.1-K번째 숫자 꺼내기  (0) 2021.07.07
Lv.1-신규 아이디 추천  (0) 2021.07.07
Lv.1-마라톤  (0) 2021.07.07