λ¬Έμ μ€λͺ
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
λ¬Έμ μμμ κ°μ΅λλ€.
μ μΆλ ₯ μ #2
+4+1-2+1 = 4
+4-1+2-1 = 4
- μ΄ 2κ°μ§ λ°©λ²μ΄ μμΌλ―λ‘, 2λ₯Ό return ν©λλ€.
νμ΄ μ½λ
from collections import deque
def bfs(numbers, target):
global answer
queue = deque()
queue.append([0, 0])
while queue:
idx, temp = queue.popleft()
if idx == len(numbers) and temp == target:
answer += 1
else:
if idx != len(numbers):
queue.append([idx+1, temp + numbers[idx]])
queue.append([idx+1, temp - numbers[idx]])
return
def solution(numbers, target):
global answer
answer = 0
bfs(numbers, target)
return answer
BFS(λλΉ μ°μ νμ)μΌλ‘ ꡬννλ€.
μ¬μ€ λͺ¨λ κ²½μ°λ₯Ό νμΈνλ λΈλ£¨νΈ ν¬μ€ λ¬Έμ μΈλ°, μ΄λ₯Ό ꡬννκΈ° μν΄μ BFSλ₯Ό νμ©ν κ²μ΄λΌκ³ 보면 μ’λ€.
νμ [numbersμ index, μ΄ ν©]μ λ£κ³ , μκ³ λ¦¬μ¦μ ꡬννλ€.
ν λ΄λΆκ° λ€ λΉ λκΉμ§ numbers λ΄λΆ μμλ₯Ό λ€ κ±°μ³€λμ§, μ΄ ν©μ΄ ꡬνκ³ μ νλ κ°κ³Ό κ°μμ§ κ³μν΄μ νμΈνλ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ λ§΅κ² (level2, python) (0) | 2022.09.12 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] [3μ°¨] μμΆ (level2, python) (0) | 2022.09.12 |
[νλ‘κ·Έλλ¨Έμ€] λ€νΈμν¬ (level3, python) (0) | 2022.09.12 |
[νλ‘κ·Έλλ¨Έμ€] μ νλ²νΈ λͺ©λ‘ (level2, python) (0) | 2022.09.12 |
[νλ‘κ·Έλλ¨Έμ€] μ£Όμ°¨ μκΈ κ³μ° (level2, python) (0) | 2022.09.12 |