아이디어 : 경우의 수는 더하거나(+), 빼거나(-) 둘 중 하나. 그러면 트리 형식처럼 만약 2개의 숫자가 있다면 ++, --, -+, +-을 모두 고려하는 그런 방식이 될 수 있을 것 같다. -> 이렇게 하려면 더하는 경우와 빼는 경우를 각각 따로 탐색해야 한다. 즉, 따로 돌아가게 한다는 점에서 재귀함수를 써야 할것 같기도 한데... 즉, DFS 문제인것 같기는 하다.
global answer
answer = 0
def calculate(sign, numbers, cal_num, count, target):
global answer
if count < 1:
if cal_num==target:
answer+=1
return None
else:
count -= 1
if sign == "+":
cal_num += numbers[count]
elif sign == "-":
cal_num -= numbers[count]
calculate("+",numbers,cal_num,count,target)
calculate("-",numbers,cal_num,count,target)
def solution(numbers, target):
global answer
cal_num = 0
count = len(numbers)
calculate("+",numbers,cal_num,count,target)
calculate("-",numbers,cal_num,count,target)
answer = answer/2
return answer
'✨ 공부 기록 > 알고리즘' 카테고리의 다른 글
[프로그래머스 lv 2] 게임 맵 최단거리(깊이/너비 우선 탐색(DFS/BFS)) (0) | 2025.02.27 |
---|---|
[프로그래머스 lv 3] 네트워크(깊이/너비 우선 탐색(DFS/BFS)) (0) | 2025.02.26 |
[프로그래머스 lv 1] 같은 숫자는 싫어(코딩테스트 고득점 Kit/스택/큐) (0) | 2025.02.25 |
[프로그래머스 lv 0] 컨트롤 제트 (0) | 2025.02.25 |
[프로그래머스 lv 1] 과일 장수 (0) | 2025.02.25 |