반응형

-풀이

from itertools import combinations
count = 0
n, s = map(int, input().split())
l = list(map(int, input().split()))
for i in range(n):
  a = list(combinations(l, i+1))
  for j in range(len(a)):
    if sum(a[j]) == s:
      count += 1
print(count)

-풀이설명(느낀점)

[15~20분 sol] 문제를 읽고나서 딱 브루트포스 알고리즘이라는 것을 눈치챘고,  부분수열의 개수를 구하려면 정수의 개수 상관없이 모든 합의 수와 비교해야 하니까 바로 조합 함수가 떠올랐고, 조합 함수를 정수의 개수만큼 1~n개를 차례대로 반복ㅁ누을 돌려 그 합들을 순서대로 s와 비교하여 같을 경우, count += 1을 해주어 개수를 체크할 수 있다.

+ Recent posts