목록부분수열의 합 (2)
GitHubSeob

문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제풀이 다음칸을 선택, 선택하지 않는 경우인 두 경우를 나누어 DFS함수를 실행시킨다. 선택한다면 visit함수에 push_back으로 해당 idx번째 값을 넣어준다. idx가 N-1이 되었다면 visit벡터의 값들의 합을 구해 S와 같은지를 비교한다. 모두 선택하지 않는 경우는 개수에 포함이 안되므로 visit의 size가 0이 아닐 때라는 조건을 걸어..

문제 https://www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 www.acmicpc.net 문제풀이 비트 마스크를 이용하여 풀었다. 숫자가 1, 2, 3을 입력받았을 경우, 1, 2, 3, 1+2, 1+3, 2+3, 1+2+3의 7가지 경우가 있다. 1부터 7까지의 이진수를 표현하고, 0인 부분은 더하지 않고 1인 부분만 더하게 되면 부분 수열의 합을 모두 구할 수 있다. 자연수는 1부터 이므로 i=1부터, 1 N..