π νλ‘κ·Έλλ¨Έμ€ / DFS&BFS / Level 2 / νκ²λλ²
π λ¬Έμ
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
π« μ ν μ¬ν
- μ£Όμ΄μ§λ μ«μμ κ°μλ 2κ° μ΄μ 20κ° μ΄νμ λλ€.
- κ° μ«μλ 1 μ΄μ 50 μ΄νμΈ μμ°μμ λλ€.
- νκ² λλ²λ 1 μ΄μ 1000 μ΄νμΈ μμ°μμ λλ€.
π μ μΆλ ₯ μ
| numbers | target | return |
| [1, 1, 1, 1, 1] | 3 | 5 |
| [4, 1, 2, 1] | 4 | 2 |
π€ νμ΄ λ°©λ²
1οΈβ£ μκ° μ 리
β νλ²μ©λ§ μ¬μ©κ°λ₯
β‘ λνκΈ° λλ λΉΌκΈ° κ°λ₯
β’ μ€μν건 λ§μ§λ§μ νκΉ λλ²κ° λμλμ§
β£ μ«μμ μμλ³΄λ€ μ€μν건 λ¨μν + / - λΆνΈ μΌκ²
2οΈβ£ ν΄κ²° λ°©λ²
β‘οΈ β‘ (λνκΈ° & λΉΌκΈ°) μ λ΄μ©μ μ ꡬννλ κ²μ΄ μ€μνλ€.
β μ΄μ§ νΈλ¦¬ κ΅¬μ‘°λ‘ +4 -4 μ΄λ°μμ μ«μλ₯Ό λν΄κ°λ€
β‘οΈ dfs λ릴 λ λκ°μ§ λ²μ μΌλ‘ λλ¦°λ€.?
dfs (depth+1, arr, sum+num);
dfs (depth+1, arr, sum-num);
μ΄λ κ² νλκΉ StackOverFlow Error λ°μ
β‘ κ·ΈλΌ μ μ΄μ λ°°μ΄μ +4, -4, +2, -2 μ΄λ κ² λ§λ€μ΄μ λ릴κΉ?
β‘οΈ νλ κ³Όμ μ΄ μ΄λ €μ
β’ β μ λ°©λ²μ μμ ν μ¬μλ
3οΈβ£ μλ κ³Όμ
β‘οΈ λ§μΉ¨ μ νλΈ λμμ λ΄μ© μ€ λ΄κ° μκ°ν λ΄μ©μ μ μ 리ν΄λμ κ·Έλ¦Όμ΄ μμ΄μ κ°μ§κ³ μλ΄€λ€.

π» νμ΄ μ½λ
class Solution {
public static int[] numbers;
public static int target;
public static int answer;
public int solution(int[] numbers, int target) {
this.numbers = numbers;
this.target = target;
this.answer = 0;
dfs (0,0);
return answer;
}
public static void dfs (int depth, int sum) {
if (depth == numbers.length) {
if (sum == target) {
answer++;
}
return;
}
dfs(depth + 1, sum + numbers[depth]);
dfs(depth + 1, sum - numbers[depth]);
}
}
[level 2] Title: νκ² λλ², Time: 0.39 ms, Memory: 71.8 MB -BaekjoonHub · Young998904/Practice_Algorithm_Auto@904cf50
Show file tree Showing 2 changed files with 154 additions and 0 deletions.
github.com
π μ°Έκ³
β νκ²λλ² DFS μ¬κ·ν¨μ (https://www.youtube.com/watch?v=S2JDw9oNNDk)