본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1182 부분수열의 합

by Alan_Kim 2023. 1. 19.
728x90
반응형

https://www.acmicpc.net/problem/1182

 

1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

 

 

문제 해결

●리스트 안의 숫자가 매우 다양하고 주어지는 수열이 특징은 알 수 없으므로 모든 경우의 수를 다 계산해 봐야 할 것이다.

●부분수열의 합을 알아야 하기 때문에 부분수열의 순서는 상관이 없다. 따라서 i개(i>0)를 순서없이 뽑았을 때 합이 s가 되면 답을 +1을 해주면 된다.

 

CODE

import sys
input = sys.stdin.readline
from itertools import combinations
n, s = map(int, input().split())
num = list(map(int, input().split()))
ans = 0
for i in range(1,n+1):
    for comb in combinations(num, i):
        if sum(comb) == s:
            ans +=1
print(ans)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 13023 ABCDE  (0) 2023.01.22
[python] 백준 14391 종이 조각  (0) 2023.01.21
[python] 백준 11723 집합  (0) 2023.01.18
[python] 백준 2529 부등호  (2) 2023.01.17
[python] 백준 15661 링크와 스타트  (0) 2023.01.16

댓글