๋ฐ์ํ
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com


์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
/*
* N: ์์ฐ์ ๊ฐฏ์
* K: ์์ฐ์๋ฅผ ์ ํํด์ ํฉ์ด K๊ฐ ๋๋ ๊ฒฝ์ฐ
* arr[]: N๊ฐ์ ์์ฐ์๋ฅผ ๋ด์ ๋ฐฐ์ด
* ans: ๊ฒฝ์ฐ์ ์
*/
private static int N;
private static int K;
private static int arr[];
private static int ans;
private static void dfs(int count, int sum) {
/* ๊ธฐ์ ์ฌ๋ก: ์์ฐ์ x๊ฐ ์ ํํด์ ํฉ์ด K๊ฐ ๋๋ ๊ฒฝ์ฐ */
if(sum == K) {
ans ++;
return;
}
/* ๊ธฐ์ ์ฌ๋ก: ์์ฐ์ x๊ฐ์ ํฉ์ด K๋ณด๋ค ํฐ๊ฒฝ์ฐ || ์ ํํ ์์ฐ์์ ๊ฐฏ์๊ฐ N๊ฐ์ ๋์ผํ ๊ฒฝ์ฐ*/
if(sum > K || count == N) {
return;
}
// ์๊ธฐ ์์ ํฌํจ
dfs(count+1, sum+arr[count]);
// ์๊ธฐ ์์ ๋ฏธํฌํจ
dfs(count+1, sum);
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(bf.readLine());
for(int tc=1; tc<=t; tc++) {
st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
arr = new int[N];
ans = 0;
st = new StringTokenizer(bf.readLine());
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
dfs(0, 0);
System.out.println("#" + tc + " " + ans);
}
bf.close();
}
}
ํ์ด
nCr ์กฐํฉ ๋ฌธ์ .
์ฌ๊ทํจ์๋ฅผ ํตํด ํด๊ฒฐํ๊ณ , ์ฌ๊ทํจ์์ ์ข ๋ฃ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ณ ๋ฅธ ์์ฐ์์ ํฉ์ด K์ ๋์ผํ ๊ฒฝ์ฐ
- ๊ณ ๋ฅธ ์์ฐ์์ ํฉ์ด K๋ณด๋ค ํฌ๊ฑฐ๋, ๊ณ ๋ฅธ ์์ฐ์์ ๊ฐฏ์๊ฐ N๊ฐ์ผ ๊ฒฝ์ฐ
dfs ์ฌ๊ท ํธ์ถ์ ํตํด ํ์ฌ ์ ํ๋ ์ซ์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ
- dfs(count+1, sum+arr[count])
ํ์ฌ ์ ํ๋ ์ซ์๋ฅผ ํฌํจํ์ง ์๊ณ ๋ค์์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ
- dfs(count+1, sum)
๋ก ๋๋์ด ํ์์ ์งํํจ.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SW Expert Academy] - (D1)2072. ํ์๋ง ๋ํ๊ธฐ(Stream) (4) | 2020.08.05 |
---|---|
[๋ฐฑ์ค] 2562๋ฒ: ์ต๋๊ฐ(Stream) (0) | 2020.08.04 |
[SW Expert Academy] - (D3)4299. ํํ์ด์ ์ฌ๋์ ํ์ด๋ฐ (0) | 2020.07.17 |
[SW Expert Academy] - (D3)8931. ์ ๋ก(Stack) (0) | 2020.07.12 |
[SW Expert Academy] - (D3)9997. ๋ฏธ๋๋ฉ๋ฆฌ์ฆ ์๊ณ (0) | 2020.07.10 |
๋๊ธ