CS/알고리즘_문제풀이(파이썬)

사탕 담기

Jedy_Kim 2021. 8. 13. 12:47
728x90

문제 설명

m 그램(gram)을 담을 수 있는 가방에 사탕을 가득 채우는 경우의 수를 구하려 합니다. 단, 같은 사탕은 또 넣을 수 없습니다.

가방이 감당할 수 있는 무게 m, 사탕별 무게가 담긴 배열 weights가 매개변수로 주어질 때, 가방을 정확히 m 그램으로 채우는 경우의 수를 return 하는 solution 함수를 작성해주세요.

제한 조건

  • m은 1,000 이상 100,000 이하인 자연수입니다.
  • 모든 사탕의 무게는 10 이상 100,000 이하인 자연수입니다.
  • weights의 길이는 3 이상 15 이하입니다.

입출력 예

m weights return
3000 [500, 1500, 2500, 1000, 2000] 3

입출력 예 설명

사탕을 하나씩 선택해 3000 그램으로 만드는 방법은 [500, 1000, 1500], [1000, 2000], [500, 2500] 으로 3가지입니다.

 

#코드

1
2
3
4
5
6
7
8
9
from itertools import combinations
 
def solution(m, weights):
    answer = []
    
    for i in range(1len(weights)):
        answer.append([sum(c) for c in combinations(weights, i)].count(m))
    
    return sum(answer)
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

주사위 게임  (0) 2021.08.16
N-Queen  (0) 2021.08.13
세 소수의 합  (0) 2021.08.13
알파윷 - E  (1) 2021.08.11
알파윷 - D  (0) 2021.08.11