문제
총 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 |