λ¬Έμ μ€λͺ
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 μ΄νμΈ μμ°μμ λλ€.
μ
μΆλ ₯ μ
numbers | target | return |
[1, 1, 1, 1, 1] | 3 | 5 |
λμ μ루μ (μ κ·Ό λ°©λ²)
dfs/bfs μ ν λ¬Έμ λ 보μλ§μ "μ¬κ·?" λ₯Ό μ‘°μ¬μ€λ λ¬»κ² λλ€. μ΄λ² λ¬Έμ μμ κΉμ΄μ°μ νμμ μ μμ΄μκΈ° λλ¬Έμ μ¬κ·λ₯Ό λΉμ°ν μ¨μΌ νλ€λ κ°μ νμ μ κ·Όν΄ λ³΄μλ€.
κ°μ₯ ν¬μΈνΈκ° λμλ λΆλΆμ νμ¬ μ«μ μ΄ν λ€μ΄μ€λ μ«μμ + μ - κ° μ€λ κ²½μ° λ κ°μ§ λͺ¨λλ₯Ό κ²ν ν΄μΌ νλ€λ κ²μ΄λ€. μ΄λ€ μμΌλ‘λ λ°°μ΄μ΄ λΉ λ°°μ΄μ΄ λ λκΉμ§ μ«μλ₯Ό μμμλΆν° νλμ© λΉΌμ +, - λ₯Ό λΆμ¬μΌκ² λ€λ μκ°μ΄ λ€μλ€. λ°°μ΄λ‘ λͺ¨λ μ‘°ν©μ λ§λ€μλ μκ° λ³΅μ‘λκ° μ°λ €λμλλ°, target μ΄ μ μλ‘ μ£Όμ΄μ‘λ€λ μ μ΄ ννΈκ° λμλ€.
target μμ λ°°μ΄μμ λΊ νμ¬ μ«μλ₯Ό λΉΌκ±°λ λνλ©΄ κ²°κ΅ + μ - κΈ°νΈλ₯Ό λΆμ΄λ κ²μ΄λ λ§μ°¬κ°μ§μ΄κ³ , λͺ¨λ κ³Όμ μ΄νμ target μ΄ μ νν 0μ΄ λλ€λ©΄ μ΄λ ν΄λΉ μ«μλ€μ (μ λν¬ν) μ‘°ν©μΌλ‘ target μ λ§λ€ μ μλ€λ λ»μ΄ λλ―λ‘ 1μ μΆκ°ν΄μ€λ€. κ·Έλ μ§ μμ κ²½μ°, 0 μ μΆκ°ν΄ μ£Όμ΄ ν©μ°λ λ μν₯μ μ£Όμ§ μλλ‘ νλ€.
그리νμ¬ μμ±ν μ½λμ΄λ€.
def solution(numbers, target):
if len(numbers) == 0:
if target == 0:
return 1
else:
return 0
return solution(numbers[1:], target - numbers[0]) + solution(numbers[1:], target - numbers[0] * -1)
**μΆκ° μ€λͺ
numbers = [1,2,3], target = 6 μ ꡬνκ³ μ νλ κ²½μ°
target(6) - 1, μ¬κ·([2,3])
target(5) - 2 + μ¬κ·([3])
target(3) - 3 + μ¬κ·([]) -> target == 0, 1 λ°ν
target(3) - -3 + μ¬κ·([]) -> target == 6, 0 λ°ν
target(5) - -2 + μ¬κ·([3])
target(7) - 3 + μ¬κ·([]) -> target == 4, 0 λ°ν
target(7) - -3 + μ¬κ·([]) -> target == 10, 0 λ°ν
target(6) - -1 + μ¬κ·([2,3])
target(7) - 2 + μ¬κ·([3])
target(4) - 3 + μ¬κ·([]) -> target == 1, 0 λ°ν
target(4) - -3 + μ¬κ·([]) -> target == 7, 0 λ°ν
target(7) - -2 + μ¬κ·([3])
target(9) - 3 + μ¬κ·([]) -> target == 6, 0 λ°ν
target(9) - -3 + μ¬κ·([]) -> target == 12, 0 λ°ν
κ²°λ‘ : ν©μ°νμ¬ μ»μ΄μ§λ μλ 1μ΄λ―λ‘ κ²½μ°μ μλ 1κ°μ΄λ€.
μ΅μ΄ target μ λλ¬ν μ μλ μ«μμ μ‘°ν©μ ꡬνλ λ°©λ²: 1μ΄ λ°νλλ μ¬κ·μ μ¬μ©λμλ μ«μλ€μ λΆνΈλ₯Ό λ°λλ‘ λ리면 λλ€.
μμ λμ¨ μμμ κ²½μ°, [+1, +2, +3] λ§μ΄ λ΅μ΄ λ μ μλ€.
'π» DEV > γ΄ problems' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] ν(Heap) : λ λ§΅κ² (0) | 2021.07.08 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] Summer/Winter Coding(2019) : λ©μ©‘ν μ¬κ°ν (0) | 2021.07.08 |
[νλ‘κ·Έλλ¨Έμ€] 2019 KAKAO BLIND RECRUITMENT : μ€νμ±ν λ°© (0) | 2021.07.07 |
[νλ‘κ·Έλλ¨Έμ€] 2017 νμ€νμ΄: μ§μ§μ΄ μ κ±°νκΈ° (0) | 2021.07.07 |
[νλ‘κ·Έλλ¨Έμ€] 그리λ(Greedy) : 체μ‘볡 (0) | 2021.07.07 |
λκΈ