View
๋ฐ์ํ
๋ฌธ์
N๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์์ ๋, ํฌ๊ธฐ๊ฐ ์์์ธ ๋ถ๋ถ์์ด ์ค์์ ๊ทธ ์์ด์ ์์๋ฅผ ๋ค ๋ํ ๊ฐ์ด S๊ฐ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ N๊ณผ ์ ์ S๊ฐ ์ฃผ์ด์ง๋ค. (1 โค N โค 20, |S| โค 1,000,000) ๋์งธ ์ค์ N๊ฐ์ ์ ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์์ ์ ๋๊ฐ์ 100,000์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ํฉ์ด S๊ฐ ๋๋ ๋ถ๋ถ์์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
5 0
-7 -3 -2 5 8
์์ ์ถ๋ ฅ 1
1
S๊ฐ 0์ผ๋๋ sum=0์ ์ด๊ธฐํ์ ๊ฒน์น๋ฏ๋ก ์ ๊ฒฝ์จ์ค์ผํ๋ค
๋ถ๋ถ์งํฉ์ผ๋ก ํ๋ฉด ์ฝ๊ฒ ํ ์ ์์
๐คฆโโ๏ธ My Solution
package ์์ด์กฐํฉ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_9095 {
static int N, S, total;
static int arr[];
static boolean select[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
S = Integer.parseInt(st.nextToken());
arr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
total = 0;
select = new boolean[N];
subset(0);
if (S == 0)
total -= 1;
System.out.println(total);
}
static public void subset(int idx) {
// ๊ธฐ์ ์กฐ๊ฑด
int sum = 0;
if (idx == N) {
sum = 0;
for (int i = 0; i < N; i++) {
if (select[i]) {
sum += arr[i];
}
}
if (sum == S)
total++;
return;
}
select[idx] = true;
subset(idx + 1);
select[idx] = false;
subset(idx + 1);
}
}
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ๋ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ(Java) (0) | 2022.10.01 |
---|---|
[SWEA] 3124: ์ต์ ์คํจ๋ ํธ๋ฆฌ(Java) (0) | 2022.08.30 |
[BJ] 2003๋ฒ: ์๋ค์ ํฉ2 (Java) (0) | 2022.08.30 |
[BJ]10974๋ฒ: ๋ชจ๋ ์์ด(Java) (0) | 2022.08.30 |
[BJ] 1987๋ฒ: ์ํ๋ฒณ(Java) (0) | 2022.08.30 |
reply