728x90
반응형
타겟 넘버.
ex)
numbers = [1, 1, 1, 1, 1], tartget = 3, return = 5
이때,

이와 같이 표현될 수 있다. index 0번부터 계속해서 빼고 더하는 동작을 반복하며, target에 맞는지 확인하는 작업을 해주면 된다.
dfs에서도 재귀를 사용하여 알고리즘을 짰다.
def solution(numbers, target):
answer = 0
n = len(numbers)
def dfs(idx, rlt):
# index가 끝
if idx == n:
# 결과와 target이 같을 때
if rlt == target:
nonlocal answer
answer += 1
return
# 위 조건을 다 만족하지 못한다면 재귀
else:
dfs(idx+1, rlt+numbers[idx])
dfs(idx+1, rlt-numbers[idx])
dfs(0, 0)
return answer
nonlocal
이번 알고리즘을 풀며 nonlocal을 사용했다.
nonlocal은 지역변수가 아닌 변수를 사용할 때 선언해준다.
# out, in 시점에서 global
def out():
# out 시점에서 local
# in 시점에서 nonlocal
def in():
# in 시점에서 local
728x90
반응형
'알고리즘 > python' 카테고리의 다른 글
[프로그래머스] lv2 배달_python (2) | 2024.03.22 |
---|---|
[프로그래머스] lv2 JadenCase 문자열 만들기_python (0) | 2024.03.22 |
[BOJ]ACM Craft(1005), 위상정렬 (0) | 2023.04.19 |
[BOJ]서강그라운드(14938), 플로이드-워셜 (0) | 2023.04.19 |
[BOJ]N-QUEEN(9663), 백트래킹 (2) | 2023.04.19 |
728x90
반응형
타겟 넘버.
ex)
numbers = [1, 1, 1, 1, 1], tartget = 3, return = 5
이때,

이와 같이 표현될 수 있다. index 0번부터 계속해서 빼고 더하는 동작을 반복하며, target에 맞는지 확인하는 작업을 해주면 된다.
dfs에서도 재귀를 사용하여 알고리즘을 짰다.
def solution(numbers, target):
answer = 0
n = len(numbers)
def dfs(idx, rlt):
# index가 끝
if idx == n:
# 결과와 target이 같을 때
if rlt == target:
nonlocal answer
answer += 1
return
# 위 조건을 다 만족하지 못한다면 재귀
else:
dfs(idx+1, rlt+numbers[idx])
dfs(idx+1, rlt-numbers[idx])
dfs(0, 0)
return answer
nonlocal
이번 알고리즘을 풀며 nonlocal을 사용했다.
nonlocal은 지역변수가 아닌 변수를 사용할 때 선언해준다.
# out, in 시점에서 global
def out():
# out 시점에서 local
# in 시점에서 nonlocal
def in():
# in 시점에서 local
728x90
반응형
'알고리즘 > python' 카테고리의 다른 글
[프로그래머스] lv2 배달_python (2) | 2024.03.22 |
---|---|
[프로그래머스] lv2 JadenCase 문자열 만들기_python (0) | 2024.03.22 |
[BOJ]ACM Craft(1005), 위상정렬 (0) | 2023.04.19 |
[BOJ]서강그라운드(14938), 플로이드-워셜 (0) | 2023.04.19 |
[BOJ]N-QUEEN(9663), 백트래킹 (2) | 2023.04.19 |