https://www.acmicpc.net/problem/1182
1182๋ฒ: ๋ถ๋ถ์์ด์ ํฉ
์ฒซ์งธ ์ค์ ์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ N๊ณผ ์ ์ S๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) ๋์งธ ์ค์ N๊ฐ์ ์ ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์์ ์ ๋๊ฐ์ 100,000์ ๋์ง ์๋๋ค.
www.acmicpc.net
1. ๋ฌธ์
๋ถ๋ถ์์ด์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
2. ํ์ด
๊ธฐ๋ณธ ๋ถ๋ถ์์ด ๋ฌธ์ ์ด๋ค.
๋นํธ๋ง์คํน์ผ๋ก ํ์ด๋ณด์๋ค.
3. ์ฝ๋
package com.steady.steady_and_slowly;
import java.io.*;
import java.util.*;
public class Main {
static int N, S, ans;
static int[] arr;
public static void main(String[] args) throws Exception {
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());
}
// ์
๋ ฅ ๋
for (int i=1; i< 1<<N; i++) { //๋ถ๋ถ์งํฉ์ ๊ฐ์, 0: ๊ณต์งํฉ
int sum = 0;
for (int j=0; j<N; j++) {
if ((i & (1<<j)) != 0) { //์กด์ฌํ๋ค
sum += arr[j];
}
}
if (sum == S) ans++;
}
System.out.println(ans);
}
}
4. ์ฌ๋ด
๊ธฐ์กด ์ฌ๊ท๋ฐฉ์ subset๋ณด๋ค ๊ฐ๋จํ ๊ฒ ๊ฐ๋ค.
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 14499 ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ - Java (1) | 2023.10.17 |
---|---|
[BOJ] 21610 ๋ง๋ฒ์ฌ ์์ด์ ๋น๋ฐ๋ผ๊ธฐ - Java (0) | 2023.10.14 |
[BOJ] 3190 ๋ฑ - Java (1) | 2023.09.14 |
[BOJ] 13458 ์ํ๊ฐ๋ - Java (0) | 2023.09.13 |
[BOJ] 14501 ํด์ฌ - Java (0) | 2023.06.01 |