2817. λΆλΆ μμ΄μ ν© (D3 python)
π λ¬Έμ λ°λ‘κ°κΈ°
https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW νλ‘κ·Έλλ° μλ κ°νμ λμμ΄ λλ λ€μν νμ΅ μ»¨ν μΈ λ₯Ό νμΈνμΈμ!
swexpertacademy.com
π‘μ κ·Ό λ°©λ²
- κ°μ ν¬ν¨νλ κ²½μ°, ν¬ν¨νμ§ μλ κ²½μ° -> 2κ°μ§μ κ²½μ°μ μλ‘ κ°λκ° λλκ³ ,
- κ·Έ κ°λ μ€μ Kκ°κ³Ό κ°μ κ°―μλ₯Ό ꡬνκΈ°
- μ¬λ¬ κ°λλ‘ λ»μ΄λκ°λ€ -> dfsλ‘ μ κ·Ό ν΄λ³΄μ!
- ν¬ν¨νλ κ²½μ°, ν¬ν¨νμ§ μλ κ²½μ° -> dfs μ¬κ·ν¨μλ₯Ό 2λ² νΈμΆν΄μ νλλ ν¬ν¨O, νλλ ν¬ν¨X
- sumμ μ λ¬νλ©΄μ sum==Kμ΄λ©΄
- count +=1 νκ³ , return
π€ return μ μνλ©΄?
returnμ μ νλ©΄ κ·Έ κ°λκ° λλμ§ μκ³ μ€λ³΅ κ³μ°μ΄ λλ€
μλ₯Ό λ€μ΄ data = [1,2,1,2] μ΄κ³ K=3μΌλ
1,2,1,2
OO : 1λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count ++
OOX : 2λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
OOXX : 3λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
OXXO : 3λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++
XOO : 2λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++
XOOX : 3λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
XXOO : 3λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++
returnκ°μ λ£μ§ μμΌλ©΄ κ·Έ μ΄νμλ κ³μ count++κ° λμ΄μ μ€λ³΅μ΄ λμ΄ 7μ΄ λμ¨λ€
β returnμ λ£μΌλ©΄
1,2,1,2
OO| : 1λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count ++ return
OOX : 2λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
OOXX : 3λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
OXXO| : 3λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++ return
XOO| : 2λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++ return
XOOX : 3λ²μ§Έ μΈλ±μ€ μ λνκ³ λ ν count++
XXOO| : 3λ²μ§Έ μΈλ±μ€ λνκ³ λ ν count++ return
μ€λ³΅μ μ κ±°νμ¬ 4κ° λμ¨λ€.
π‘ νμ΄μ½λ
def dfs(index, sum = 0):
global count
if sum == K:
count +=1
return #return μ νλ©΄ κ·Έ μ΄ν data[index] μ λνκ³ μ΄ κ°λλ λλ¨
if index == N:
return
dfs(index+1, sum + data[index]) #ν¬ν¨ν κ²½μ°
dfs(index+1, sum) #ν¬ν¨νμ§ μμ κ²½μ°
tc = int(input())
for i in range(tc):
N, K = map(int, input().split())
count = 0
data = list(map(int,input().split()))
dfs(0)
print('#{} {}'.format(i+1, count))