본문으로 바로가기

BOJ 1182 부분수열의 합

category 알고리즘 2019. 9. 10. 21:06

 

문제

N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다.

내 풀이

powerset()이라는 함수를 사용해서 풀었다.

주어진 sequence에 대해 재귀적으로 부분집합을 만드는 generator이다.

generator이기 때문에 numbersset에 for문으로 append해주고,

answer를 구하는 데는 list comprehension을 사용해 부분집합의 sum이 S인 경우에만 1을 저장하도록 하여 len()를 구했다.

 

 

'알고리즘' 카테고리의 다른 글

BOJ 13460 구슬탈출2  (0) 2019.09.10
BOJ 2798 블랙잭  (0) 2019.09.10
programmers 예산  (0) 2019.09.09
2018 kakao blind recruitment 길 찾기 게임  (0) 2019.09.09
2017 kakao blind recruitment 3차 자동완성  (0) 2019.09.06