π μ μΆ
import java.util.Scanner;
public class Main {
static int answer = 0;
static int N;
static int S;
static int[] nums;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
S = sc.nextInt();
nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
dfs(0, 0);
if (S == 0) answer--;
System.out.println(answer);
}
public static void dfs(int index, int sum) {
if (index == N) {
if (sum == S) {
answer++;
}
return;
}
dfs(index + 1, sum);
dfs(index + 1, sum + nums[index]);
}
}
β νμ΄
ν΅μ¬ μμ΄λμ΄:
- κ° μμλ₯Ό ν¬ν¨νκ±°λ ν¬ν¨νμ§ μλ λ κ°μ§ μ νμ κ°μ§λ©΄μ, λͺ¨λ κ°λ₯ν λΆλΆμμ΄μ νμν©λλ€.
- μ¬κ·μ μΌλ‘ κ° μμλ₯Ό μ νν κ²½μ°μ μ ννμ§ μμ κ²½μ°λ₯Ό μ²λ¦¬νμ¬, λͺ¨λ κ²½μ°μ μλ₯Ό νμν©λλ€.
- νμ κ³Όμ μμ λΆλΆμμ΄μ ν©μ΄ Sμ κ°μμ§λ κ²½μ°λ₯Ό μΉ΄μ΄νΈν©λλ€.
μ½λ μ€λͺ
- DFS ν¨μ (dfs):
- κ° μ¬κ· νΈμΆμμ νμ¬ μΈλ±μ€ indexμ μμλ₯Ό ν¬ν¨ν μ§ μ¬λΆλ₯Ό κ²°μ ν©λλ€.
- μμλ₯Ό ν¬ν¨νμ§ μλ κ²½μ°, λ€μ μΈλ±μ€λ‘ λμ΄κ°κ³ (dfs(index + 1, sum)).
- μμλ₯Ό ν¬ν¨νλ κ²½μ°, νμ¬ ν©κ³μ μμλ₯Ό λν ν λ€μ μΈλ±μ€λ‘ λμ΄κ°λλ€ (dfs(index + 1, sum + nums[index])).
- κΈ°μ 쑰건:
- index == Nμ΄ λλ©΄ λͺ¨λ μμλ₯Ό λ€ κ³ λ €ν κ²μ΄λ―λ‘, νμ¬ ν©κ³κ° Sμ κ°μμ§ νμΈνμ¬ μΉ΄μ΄νΈν©λλ€.
- κ²°κ³Ό μ‘°μ :
- λ§μ½ Sκ° 0μΈ κ²½μ°, μ무κ²λ μ ννμ§ μμ κ²½μ°λ ν¬ν¨λ μ μμΌλ―λ‘, μ΄ κ²½μ°λ₯Ό μ μΈνκΈ° μν΄ μ΅μ’ μ μΌλ‘ answerμμ 1μ λΊλλ€
arr = [-7, -3, -2, 5, 8]
dfs(index, sum)
dfs(0, 0) // μμμ , νμ¬ ν©κ³ 0
βββ dfs(1, 0) // μμ -7μ ν¬ν¨νμ§ μμ
β βββ dfs(2, 0) // μμ -3μ ν¬ν¨νμ§ μμ
β β βββ dfs(3, 0) // μμ -2λ₯Ό ν¬ν¨νμ§ μμ
β β β βββ dfs(4, 0) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ
β β β β βββ dfs(5, 0) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ 0)
β β β β βββ dfs(5, 0 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 8)
β β β βββ dfs(4, 0 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ 5
β β β βββ dfs(5, 5) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ 5)
β β β βββ dfs(5, 5 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 13)
β β βββ dfs(3, 0 + (-2)) // μμ -2λ₯Ό ν¬ν¨ -> ν©κ³ -2
β β βββ dfs(4, -2) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -2
β β β βββ dfs(5, -2) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -2)
β β β βββ dfs(5, -2 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 6)
β β βββ dfs(4, -2 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ 3
β β βββ dfs(5, 3) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ 3)
β β βββ dfs(5, 3 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 11)
β βββ dfs(2, 0 + (-3)) // μμ -3μ ν¬ν¨ -> ν©κ³ -3
β βββ dfs(3, -3) // μμ -2λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -3
β β βββ dfs(4, -3) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -3
β β β βββ dfs(5, -3) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -3)
β β β βββ dfs(5, -3 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 5)
β β βββ dfs(4, -3 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ 2
β β βββ dfs(5, 2) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ 2)
β β βββ dfs(5, 2 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 10)
β βββ dfs(3, -3 + (-2)) // μμ -2λ₯Ό ν¬ν¨ -> ν©κ³ -5
β βββ dfs(4, -5) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -5
β β βββ dfs(5, -5) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -5)
β β βββ dfs(5, -5 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 3)
β βββ dfs(4, -5 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ 0
β βββ dfs(5, 0) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ 0)
β βββ dfs(5, 0 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 8)
βββ dfs(1, 0 + (-7)) // μμ -7μ ν¬ν¨ -> ν©κ³ -7
βββ dfs(2, -7) // μμ -3μ ν¬ν¨νμ§ μμ -> ν©κ³ -7
β βββ dfs(3, -7) // μμ -2λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -7
β β βββ dfs(4, -7) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -7
β β β βββ dfs(5, -7) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -7)
β β β βββ dfs(5, -7 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 1)
β β βββ dfs(4, -7 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ -2
β β βββ dfs(5, -2) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -2)
β β βββ dfs(5, -2 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 6)
β βββ dfs(3, -7 + (-2)) // μμ -2λ₯Ό ν¬ν¨ -> ν©κ³ -9
β βββ dfs(4, -9) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -9
β β βββ dfs(5, -9) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -9)
β β βββ dfs(5, -9 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ -1)
β βββ dfs(4, -9 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ -4
β βββ dfs(5, -4) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -4)
β βββ dfs(5, -4 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 4)
βββ dfs(2, -7 + (-3)) // μμ -3μ ν¬ν¨ -> ν©κ³ -10
βββ dfs(3, -10) // μμ -2λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -10
β βββ dfs(4, -10) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -10
β β βββ dfs(5, -10) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -10)
β β βββ dfs(5, -10 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ -2)
β βββ dfs(4, -10 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ -5
β βββ dfs(5, -5) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -5)
β βββ dfs(5, -5 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 3)
βββ dfs(3, -10 + (-2)) // μμ -2λ₯Ό ν¬ν¨ -> ν©κ³ -12
βββ dfs(4, -12) // μμ 5λ₯Ό ν¬ν¨νμ§ μμ -> ν©κ³ -12
β βββ dfs(5, -12) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -12)
β βββ dfs(5, -12 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ -4)
βββ dfs(4, -12 + 5) // μμ 5λ₯Ό ν¬ν¨ -> ν©κ³ -7
βββ dfs(5, -7) // μμ 8μ ν¬ν¨νμ§ μμ -> λ(ν©κ³ -7)
βββ dfs(5, -7 + 8) // μμ 8μ ν¬ν¨ -> λ(ν©κ³ 1)
'PS > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ | 10974] λͺ¨λ μμ΄- Java (0) | 2024.08.15 |
---|---|
[λ°±μ€ | 9095] 1, 2, 3 λνκΈ° - Java (0) | 2024.08.14 |
[λ°±μ€ | 15630] Nκ³Ό M(2) - Java (0) | 2024.08.14 |
[λ°±μ€ | 15649] Nκ³Ό M(1) - Java (0) | 2024.08.14 |
[λ°±μ€ | 1966] νλ¦°ν° ν - Java (0) | 2024.08.11 |