문제 링크입니다 https://programmers.co.kr/learn/courses/30/lessons/43165
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를 증가시킵니다.
[소스코드]
'알고리즘 > Programmers' 카테고리의 다른 글
프로그래머스 LEVEL 1 : 모의고사 (0) | 2020.04.09 |
---|---|
프로그래머스 LEVEL 2 : 가장 큰 수 (0) | 2020.04.06 |
프로그래머스 LEVEL 2 : 다음 큰 숫자 (0) | 2020.04.05 |
프로그래머스 LEVEL 2 : N개의 최소공배수 (0) | 2020.04.04 |
프로그래머스 LEVEL 2 : 숫자의 표현 (0) | 2020.04.04 |