본문 바로가기

Baekjoon/[6] 백트래킹12

[백준] 1182번 부분수열의 합 JAVA (자바) 풀이 문제 1182번  :  N개의 정수로 이루어진 수열    크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하기  [입력] :  첫 줄에 정수 개수 N, 정수 S (1 ≤ N ≤ 20, |S| ≤ 1,000,000)     둘째 줄에 N개의 수열이 공백으로 구분[출력] : 합이 S가 되는 부분수열 개수 출력 [과정] - [공통] 공집합일 경우를 생각해야 하므로 S = 0 이라면 -1 하고 시작한다  - 재귀적 백트래킹반복문을 쓰지 않아서 좀 더 직관적으로 코드를 간결하게 볼 수 있다dfs(next,sum);         dfs(next,sum+arr[start]); 예) [3, 7, 2] / S=9        backtrack(0, 0)              ├.. 2023. 11. 27.
[백준] 15649번 N과 M(1) JAVA (자바) 풀이 문제 15649번 (백트래킹) :  자연수 N과 M이 주어졌을 때,     1부터 N까지 자연수 중에서 중복 없이 M개를 골라서 수열을 모두 구하는 프로그램        (예) N = 3, M = 1 인 경우    1~3까지의 수 중에서 1개만 골라서 만들 수 있는 수열을 모두 만든다    1 / 2 / 3 이렇게 만든 수열을 한줄에 하나씩 출력한다  [입력] :  첫 줄에 자연수 N, M (1 ≤ M ≤ N ≤ 8)[출력] : 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력 (중복 수열 X)   수열의 원소는 공백으로 구분해서 출력  : 수열은 사전 순으로 증가하는 순서로 출력  [과정]  탐색하자 → 브루트포스 / dfs → 조건이 있다 → 백트래킹 문제 조건) 숫자 중복금지 → 완전 탐색이 아닌.. 2023. 11. 13.