λ¬Έμ μ€λͺ
nκ°μ μμ΄ μλ μ μκ° μμ΅λλ€. μ΄ μλ₯Ό μ μ ν λνκ±°λ λΉΌμ νκ² λλ²λ₯Ό λ§λ€λ €κ³ ν©λλ€. μλ₯Ό λ€μ΄ [1, 1, 1, 1, 1]λ‘ μ«μ 3μ λ§λ€λ €λ©΄ λ€μ λ€μ― λ°©λ²μ μΈ μ μμ΅λλ€.
-1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3
μ¬μ©ν μ μλ μ«μκ° λ΄κΈ΄ λ°°μ΄ numbers, νκ² λλ² targetμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ μ«μλ₯Ό μ μ ν λνκ³ λΉΌμ νκ² λλ²λ₯Ό λ§λλ λ°©λ²μ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- μ£Όμ΄μ§λ μ«μμ κ°μλ 2κ° μ΄μ 20κ° μ΄νμ λλ€.
- κ° μ«μλ 1 μ΄μ 50 μ΄νμΈ μμ°μμ λλ€.
- νκ² λλ²λ 1 μ΄μ 1000 μ΄νμΈ μμ°μμ λλ€.
μ μΆλ ₯ μ
[1, 1, 1, 1, 1] | 3 | 5 |
μ μΆλ ₯ μ μ€λͺ
λ¬Έμ μ λμ¨ μμ κ°μ΅λλ€.
function solution(numbers, target) {
var answer = 0;
recur(0, 0);
return answer;
// μ¬κ·ν¨μ ννμ DFS ꡬν
function recur(cnt, sum){
// numbersμ λͺ¨λ μλ₯Ό μ°μ°νκ³ , targetκ³Ό κ°μ ν©μ΄ λμ€λ©΄ answerμ¦κ°
if(cnt === numbers.length){
if(sum === target)
answer++;
return
}
// + , - μ°μ° λͺ¨λ μν
recur(cnt+1, sum+numbers[cnt]);
recur(cnt+1, sum-numbers[cnt]);
}
}
λ¬Έμ μ μ€λͺ μ΄ λΆμ‘±ν΄μ λ§μ΄ ν΄λ©¨λ€. μλνλ©΄, μ λ ₯ μμ μμ [1, 1, 1, 1, 1]μ΄ μμλλ‘ μ§μΌμ ΈμΌ νλμ§ μλμ§μ μ¬λΆκ° μ νν λͺ μλμ΄ μμ§ μμλ€. κ·Έλμ 'μμκ° μ€μνμ§ μμ' ννλ‘ λ¬Έμ λ₯Ό μ κ·Όνμ¬ μ€λ μκ°μ ν΄κ²°νμΌλ λΉ¨κ°μ μ€ν¨κ° μλ₯΄λ₯΄ μκ²Όλ€. μ£Όμμ΄μμΌλ©΄ λΉ¨κ°μμ΄ λ°κ°κ² μ§λ§ μμ½λ€. λ°λΌμ, 'μμκ° μ€μν' ννλ‘ κ΅¬ννμλ€.
numbers λ°°μ΄μ μμλ₯Ό DFSλ₯Ό ν΅ν΄ ν©μ ꡬνλλ‘ κ΅¬ννμλ€. μλλ μμμ΄λ€.
0 1 2
-> +1
-> +1
-> -1
0
-> +1
-> -1
-> -1 .....
μ΄λ¬ν ννλ‘ κ³μν΄μ λν΄μ§λ κΉμ΄ μ°μ νμμ μ¬κ·ν¨μλ‘ κ΅¬ννμλ€.
μ’ λ£ μ‘°κ±΄μΌλ‘λ cntκ° numbersμ κΈΈμ΄λ§νΌ μννλ€λ κ²μ λͺ¨λ μμλ₯Ό μ°μ°νλ€λ κ²μ΄κ³ , λν targetκ³Ό λͺ¨λ μ°μ°λ sumμ΄ κ°λ€λ©΄ answerλ₯Ό μ¦κ°νλ λ°©μμ΄λ€.
λ¬Έμ λ₯Ό νλ€κ° λΉν©μ€λ¬μ΄ μλ¬κ° μμλ€.
μ μμ€μ½λμμ μ¬κ·ν¨μ νΈμΆ λΆλΆμμ cnt+1μ cnt++λ‘ νμ λ λ°μν μλ¬μλ€.
μλ¬ λ°μ μμΈμ cnt++μ μ¬μ©νλ©΄ cntκ° 2μ΄λ©΄ λ€μ μ¬κ· ν¨μμλ 3μ μΈμλ‘ μ¬μ©ν΄μΌ νλλ°, ++νμ°μ°μ μ¬μ©νκ² λλ©΄ cntκ° 2λ‘ μΈμλ‘ μ¬μ©λ ν 3μΌλ‘ μ¦κ°λκΈ° λλ¬Έμ΄λ€. λ°λΌμ, numbers.lengthλ 5μΈλ°, cntκ° 6κΉμ§ μ°μ°μ μννλ €ν΄μ μΈλ±μ€ μ κ·Όμ μ€λ₯κ° λ°μν κ²μ΄λ€.
'π Algorithm > Solved' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] μ‘°μ΄μ€ν± (Javascript) (0) | 2021.01.19 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] 체μ‘볡 (Javascript) (0) | 2021.01.10 |
[νλ‘κ·Έλλ¨Έμ€] λͺ¨μκ³ μ¬ (Javascript) (0) | 2021.01.10 |
[νλ‘κ·Έλλ¨Έμ€] Kλ²μ§Έ μ (Javascript) (0) | 2021.01.07 |
[νλ‘κ·Έλλ¨Έμ€] μμ£Όνμ§ λͺ»ν μ μ (Javascript) (0) | 2021.01.07 |