알고리즘/Programmers

프로그래머스 LEVEL 2 : 타겟 넘버

꾸준하게 :) 2020. 4. 5. 21:50

문제 링크입니다 https://programmers.co.kr/learn/courses/30/lessons/43165

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

N개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯가지의 방법을 쓸 수 있습니다.

 

-1+1+1+1+1 = 3

+1-1+1+1+1 = 3

+1+1-1+1+1 = 3

+1+1+1-1+1 = 3

+1+1+1+1-1 = 3

 

사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때, 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 완성하는 문제였습니다. 재귀호출을 통해 문제를 해결했고 해결 절차는 다음과 같습니다.

 

[1] result라는 배열에 0또는 1을 재귀호출을 통해 numbers의 size만큼 담습니다.

 

[2] numbers의 size만큼 담았다면 numbers를 처음부터 끝까지 탐색하며 result에 1이 들어있으면 numbers의 원소를 sum에 더하고, 0이 들어있으면 sum에서 뺀 값을 구합니다.

 

[3] sum과 target 넘버와 같다면 answer를 증가시킵니다.

 

 

[소스코드]