โ ์ฌ๊ท ํ์ด
answer=0
def dfs(numbers,target,cur_idx,cur_total):
global answer
# ํ์ถ ์กฐ๊ฑด(๋ชจ๋ ์ ์ํ)
if cur_idx==len(numbers):
if cur_total==target:
answer+=1
return
else:
dfs(numbers,target,cur_idx+1,cur_total+numbers[cur_idx])
dfs(numbers,target,cur_idx+1,cur_total-numbers[cur_idx])
def solution(numbers, target):
global answer
dfs(numbers,target,0,0)
return answer
answer๋ฅผ ์ ์ญ๋ณ์๋ก ์ฌ์ฉํด์, dfsํจ์ ๋ด์์ ํ๊ฒ๋๋ฒ๋ฅผ ์ฐพ์์๋ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ๊ณ solutionํจ์ ๋ด์์ ์ด ๊ฐ์ ๋ฆฌํดํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ์๋ค.
์ฃผ์ด์ง numbers์ ์๋ฅผ ์ํํ๋ฉด์ +/- ์ฐ์ฐ์ ์ํํ๋ฉด์, ๋ชจ๋ ์๋ฅผ ์ํํ๋ฉด ํ๊ฒ๋๋ฒ์ ์ผ์นํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ์นด์ดํธํด์ค๋ค ์ฌ๊ท๋ฅผ ํ์ถํด์ค๋ค.
+์ - ์ฐ์ฐ์ ๋๋ค ํด์ค์ผํ๊ธฐ ๋๋ฌธ์, 2๋ฒ์ ์ฌ๊ทํธ์ถ์ ํด์ฃผ๋ฉฐ, ์ํ๋ ํ์ฌ idx+1์ฉ ํด์ฃผ๊ณ , ๋์ ๊ฐ์ ์ฌ๊ทํธ์ถํ ๋๋ง๋ค ๋๊ฒจ์ค๋ค.
def solution(numbers, target):
answer=0
def dfs(cur_idx,cur_total):
nonlocal answer
if cur_idx==len(numbers):
if cur_total==target:
answer+=1
return
dfs(cur_idx+1,cur_total+numbers[cur_idx])
dfs(cur_idx+1,cur_total-numbers[cur_idx])
dfs(0,0)
return answer
โ ์คํ ํ์ด
def solution(numbers, target):
answer=0
stack=[(0,0)] #(ํ์ฌidx,๋์ ํฉ)
while stack:
idx,total=stack.pop()
if idx==len(numbers):
if total==target:
answer+=1
continue
stack.append((idx+1,total+numbers[idx]))
stack.append((idx+1,total-numbers[idx]))
return answer
์ฝ์คํ์ ์ ํ์ด ์๊ธฐ ๋๋ฌธ์, limit์ ๋๋ฆด์ ์์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ข์ ํ์ด๋ ์๋๋ผ๋ ์๊ฒฌ์ ๋ค์๋ ๊ธฐ์ต์ด ์์ด, ์ด ๋ฌธ์ ๋ ์ฌ๊ท๋ก ํ์ด๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์คํ์ ์ด์ฉํด์๋ ํ์ด๋ณด์๋ค.
์ฌ๊ท๊ฐ ์๋๋ฏ๋ก ๋ฆฌํด๋์ , ๋ค์ ๋ฐ๋ณต ํด์ผ๋ก ๋๊ธฐ๊ธฐ ์ํด continue๋ฅผ ์ฌ์ฉํด์ฃผ์๋ค.
โ JS ํ์ด
function solution(numbers, target) {
var answer = 0;
function dfs(idx,sum){
if(idx<numbers.length){ //numbers์ ์ฒซ๋ฒ์งธ๋ถํฐ ๋ง์ง๋ง๊น์ง
dfs(idx+1,sum+numbers[idx]) //+(left)
dfs(idx+1,sum-numbers[idx]) //-(right)
}
else{ //leaf์ ๋๋ฌ
if(sum===target){ //target ์ฐพ์
answer++;
}
}
}
dfs(0,0)
return answer;
}
'ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ๋ฌด์ธ๋ ์ฌํ (0) | 2024.08.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] H-Index (0) | 2024.08.02 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.1] ์นด๋๋ญ์น (0) | 2024.08.01 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ์ด์ค ์ฐ์ ์์ํ (0) | 2024.07.31 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ๋ ๋งต๊ฒ (0) | 2024.07.30 |