λ¬Έμ μ€λͺ
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 μ΄νμΈ μμ°μμ λλ€.
μ λ΅
def solution(numbers, target):
answer = 0
sum = [[] for _ in range(len(numbers))]
sum[0].append(numbers[0])
sum[0].append(-numbers[0])
for i in range(1, len(numbers)):
for k in sum[i - 1]:
sum[i].append(k + numbers[i])
sum[i].append(k - numbers[i])
return sum[len(numbers)-1].count(target)
μ΄μ°¨μ λ°°μ΄ sumμ λ§λ λ€. 첫λ²μ§Έ μΈλ±μ€λ μ°μ°μ μ¬μ©λ μ«μμ κ°μ-1μ μλ―Ένλ€.
μλ₯Ό λ€μ΄, 1κ° μ«μλ§ μ¬μ©νμ¬ μ°μ°ν κ²½μ° sum[0]μ μ μ₯νκ³ λ§μ§λ§ μ«μμ μΈλ±μ€λ 0μ΄ λλ€.
2κ° μ«μλ₯Ό μ¬μ©νμ¬ μ°μ°ν κ²½μ° sum[1]μ μ μ₯νκ³ λ§μ§λ§ μ«μμ μΈλ±μ€λ 1μ΄ λλ€.
첫λ²μ§Έ μ«μλ§ μ¬μ©ν κ²½μ°μΈ numbers[0]κ³Ό -numbers[0]μ sum[0]μ μ μ₯νλ€.
λ°λ³΅λ¬Έμ μ΄μ©νμ¬ ν΄λΉ μ«μλ₯Ό μΆκ°νμ¬ μ°μ°νμ λλ₯Ό sum[i]μ μ μ₯νλ€.
ν΄λΉ μ«μλ₯Ό μΆκ°νμ§ μμμ λλ μΈλ±μ€-1κΉμ§ μ°μ°νμμ μλ―Ένλ―λ‘
sum[i-1]μ λͺ¨λ κ°μ ν΄λΉ μ«μ numbers[i]λ₯Ό λνκ±°λ λΊ κ°μ sum[i]μ μ μ₯νλ€.
sum[len(numbers)-1]μ λͺ¨λ μ«μλ₯Ό μ¬μ©νμ¬ μ°μ°ν λͺ¨λ κ²½μ°κ° λ€μ΄μμΌλ―λ‘
μ΄ μ€ κ°μ΄ targetκ³Ό κ°μ κ°λ§ countνμ¬ return νλ€.