728x90
재귀로 풀었다!!
각 숫자 사이에 + 또는 - 연산자를 넣어줘야 하는데
재귀로 돌면서 디시전 트리 도는 것 처럼 + , - 를 선택하고 마지막 숫자까지 갔을때 target과 같으면 count += 1를 해줘서 답을 얻었다.
def solution(numbers, target):
def choose(idx, num_sum):
if idx == len(numbers):
if num_sum == target:
return 1
return 0
return choose(idx + 1, num_sum + numbers[idx]) + choose(idx + 1, num_sum - numbers[idx])
answer = choose(0, 0)
return answer
print(solution([1, 1, 1, 1, 1], 3)) # 5
print(solution([4, 1, 2, 1], 4)) # 2
728x90
'코딩테스트' 카테고리의 다른 글
LeetCode - 1302. Deepest Leaves Sum (0) | 2024.06.01 |
---|---|
프로그래머스 - 게임 맵 최단거리 (0) | 2024.06.01 |
프로그래머스 - 소수찾기 (0) | 2024.05.29 |
프로그래머스 - 카펫 (0) | 2024.05.28 |
프로그래머스: H-index (0) | 2024.05.27 |