문제 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 풀이 N개의 정수로 이루어진 수열에서 부분 수열의 합이 S가 되는 경우의 수를 찾는 문제이다. 이는 조합을 구하고 발생한 각 조합 중 합이 S를 만족하는지 찾으면 되는 문제이다. N의 범위가 크지 않으므로, 단순히 DFS를 사용하여 문제를 풀 수 있다. 코드 DFS를 이용한 문제 풀이 from sys import stdin def dfs(depth, subtotal): global answer if depth == ..
문제 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에서 구할 수 있는 경우의 수를 트리로 벗는다면 위의 그림과 같다. 즉 주어진 수열을 모두 선택하는 경우와 부분적으로 선택하지 않을 때에 따라 합을 구하면 되는 것이다. 이를 코드로 구현한다면 재귀 호출을 이용하면 쉽게 구할 수 있다. 코드를 작성하기 위해서는 다음과 같은 경우..