[프로그래머스](python) 폰켓몬 - 찾아라 프로그래밍 마에스터
🧩 수도 코드 (시간초과)
nums에서 len(nums)/2 만큼의 수를 랜덤으로 조합하고
리스트에 저장해서 종류가 가장 많은 것 출력
🏁 내 코드 (시간초과)
def solution(nums):
from itertools import combinations as cb
tmp = []
n = len(nums)//2
nums = list(set(nums))
if len(nums) < n: # 뽑아야하는 폰켓몬의 수가 중복되지 않는 폰켓몬의 수보다 크면
picks = list((cb(nums, len(nums))))
else: # 중복되지 않는 폰켓몬의 수가 뽑아야하는 수보다 더 크면
picks = list(((nums, n)))
[tmp.append(len(set(pick))) for pick in picks]
return(max(tmp))
nums에서 set으로 중복 비허용했지만 테스트 케이스 7, 12, 13, 16에서 시간초과
질문하기에서 나와 똑같이 시간초과로 안되는 게시글이 있어, 문제를 다시 읽고 생각해보니 ! 어차피 나올 수 있는 종류의 최대값은 len(nums)//2 !
🧩 수도 코드 (풀이)
nums를 받고 새로 set(nums)의 변수를 만든 후
뽑아야하는 폰켓몬의 수 < 중복되지 않은 폰켓몬의 수이면
뽑아야하는 폰켓몬의 수 출력 (예제 1,2)
만약 뽑아야하는 폰켓몬의 수 > 중복되지 않은 폰켓몬의 수(n > len(nums)) 이면 중복되지 않은 폰켓몬의 수(len(nums)) 출력 (예제 3)
🏁 내 코드 (풀이)
def solution(nums):
n = len(nums)//2
nums = list(set(nums))
return n if len(nums) > n else len(nums)
🧩 다른 풀이
def solution(ls):
return min(len(ls)/2, len(set(ls)))
그렇지..어차피 둘 중 작은 것 출력하면 되니까..!
Author And Source
이 문제에 관하여([프로그래머스](python) 폰켓몬 - 찾아라 프로그래밍 마에스터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@richeberry/프로그래머스python-폰켓몬-찾아라-프로그래밍-마에스터저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)