[Python] 알고리즘/Silver
[1182] 부분수열의 합 (Python)
-Becca-
2022. 4. 4. 13:24
[문제]
https://www.acmicpc.net/problem/1182
1182번: 부분수열의 합
첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.
www.acmicpc.net
알고리즘 분류는 브루트포스 알고리즘, 백트래킹 입니다.
저는 python의 combinations를 사용하여 모든 경우의 수를 구한 뒤, 더한 결과를 비교하였습니다.
[코드]
import sys
from itertools import combinations
N, S = map(int, sys.stdin.readline().split())
li = list(map(int, sys.stdin.readline().split()))
all_li = list()
for i in range(1, N + 1):
all_li += list(combinations(li, i))
cnt = 0
for i in all_li:
if sum(i) == S:
cnt += 1
print(cnt)