반응형
-풀이
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을 해주어 개수를 체크할 수 있다.
'알고리즘' 카테고리의 다른 글
[수학] 백준 1011 파이썬 (Fly me to the Alpha Centauri) 골드5 (0) | 2021.12.30 |
---|---|
[DP] 백준 1309 파이썬 (동물원) 실버1 (0) | 2021.12.29 |
[브루트포스] 백준 1120 파이썬 (문자열) 실버4 (0) | 2021.12.27 |
[그래프 탐색] 백준 1012 파이썬 (유기농배추) 실버2 (0) | 2021.12.27 |
[분할정복] 백준 2630파이썬 (색종이 만들기) 실버3 (0) | 2021.12.25 |