Level 2
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.
문제 풀이
DFS 문제
값을 빼고 재귀함수에 넣고, 값을 더해서 재귀함수에 넣어준다.
n이 주어진 숫자의 개수와 같아지면 target과 같은지 확인하고 맞으면 개수+1을 해준다.
코드
class Solution {
public int count = 0;
public void dfs(int res, int n, int[] numbers, int target) {
if (n == numbers.length) {
if (res == target) {
count += 1;
}
return;
}
dfs(res-numbers[n], n+1, numbers, target);
dfs(res+numbers[n], n+1, numbers, target);
}
public int solution(int[] numbers, int target) {
dfs(0, 0, numbers, target);
return count;
}
}
728x90
'Algorithm > Problem' 카테고리의 다른 글
[Programmers] 단어 변환 - Java (0) | 2022.02.18 |
---|---|
[Programmers] 네트워크 - Java (0) | 2022.02.18 |
[Baekjoon] 14499번 : 주사위 굴리기 - Python (0) | 2022.02.14 |
[Baekjoon] 21610번 : 마법사 상어와 비바라기 - Python (0) | 2022.02.11 |
[Baekjoon] 14500 : 테트로미노 - Python (0) | 2022.02.10 |