티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/1845?language=python3
코드
from itertools import combinations
def solution(nums):
answer = 0
result=list(combinations(nums,len(nums)//2))
for i in result:
demo = [0] * (max(nums)+1)
for j in i:
demo[j] = 1
if answer < sum(demo):
answer = sum(demo)
return answer
조합을 이용해 풀려했는데 시간초과;
set으로 푸는 코드
def solution(nums):
answer = 0
leng = len(set(nums))
if len(nums) // 2 > leng:
return leng
else:
return len(nums) // 2
set을 사용해 중복값을 제거해주면 인형의 종류 수가 된다.
인형을 가져가도 되는 숫자인 N/2마리 보다 종류가 작은 경우에는 답이 무조건 set을 제거한 leng(종류)이 된다.
왜냐하면 아무리 많이 가져갈 수 있어도 종류 수가 가져갈 수 있는 수보다 작기 때문이다.
만약 leng(종류)이 N/2마리 보다 클 경우에는 답이 N/2마리가 된다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level1, 음양 더하기 (Python) (0) | 2021.06.25 |
---|---|
[프로그래머스] Level1, 내적 (Python) (0) | 2021.06.24 |
[프로그래머스] Level1, 1차 다트게임 (Python) (0) | 2021.06.18 |
[프로그래머스] Level1, 로또의 최고 순위와 최저 순위 (Python) (0) | 2021.06.18 |
[프로그래머스] Level1, 1차 비밀지도 (Python) (0) | 2021.06.18 |
댓글