[프로그래머스 43165] 타겟 넘버

코뉴·2022년 3월 5일
0

프로그래머스🍳

목록 보기
7/10

🥚문제링크

https://programmers.co.kr/learn/courses/30/lessons/43165

  • 탐색

🍳코드

def solution(numbers, target):
    if not numbers and target == 0:
        return 1
    
    if not numbers:
        return 0
    
    return solution(numbers[1:], target - numbers[0]) + solution(numbers[1:], target + numbers[0])

🧂아이디어

  • 어려운 문제는 아니었지만, 풀면서 얻은 아이디어가 있어 정리한다.
  • 처음에는 아래와 같은 코드를 작성하여 통과했다.
def solution(numbers, target):

    def solve(idx, curr):
        nonlocal answer

        if idx == len(numbers) and curr == target:
            answer += 1
            return

        if idx < len(numbers):
            solve(idx + 1, curr + numbers[idx])
            solve(idx + 1, curr - numbers[idx])

    answer = 0
    solve(0, 0)

    return answer
  • 다른 풀이들을 찾아보다가, 함수를 하나 더 만들어 주지 않아도 주어진 함수 형식인solution(numbers, target)만을 사용해서 재귀적으로 문제를 풀 수 있다는 것을 깨달았다.
  • 0에서 연산해서 target을 만들어가고, target이 만들어지면 리턴하는 형식이 아니라. target에서부터 시작해서 값들을 빼줘서 0이 되면 리턴하는 방식으로 풀면 인자가 numbers, target둘만 있어도 충분하다.
profile
코뉴의 도딩기록

0개의 댓글

관련 채용 정보