본문 바로가기

PS

[Programmers] 폰켓몬

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이 문제는 폰켓몬의 리스트가 주어지고, 그 리스트의 /2의 개수 만큼 폰켓몬을 뽑을 수 있습니다.

그 수의 최대를 출력하면 되는 문제 입니다.

여기서 저는 순열이라고 생각을 하여 combinations 가져와서 문제를 풀었는데

시간초과가 나버렸습니다.

 

from itertools import combinations

def solution(nums):
    answer = 0
    set_list = set(nums)
    flag = False
    for i in combinations(set_list, len(nums)//2):
        
        if len(i) >= answer:
            answer = len(i)
            flag = True
    if not flag:
        answer = len(set_list)
        return answer
    return answer

 

복잡하게 생각 안하고 이런식으로 출력하면 정답이 나온다.



def solution(nums):
    answer = 0
    set_list = set(nums)
    if len(set_list) > len(nums)//2:
        return len(nums)//2
    else:
        return len(set_list)