반응형
[광고 누르면 오늘의 행운 상승!!]
https://programmers.co.kr/learn/courses/30/lessons/43165?language=java
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
DFS 기본문제
1. 참고사항
- +일경우, -일경우 2번 돌려야 한다.
2. 구현
- +일경우와 -일 경우로 나누어서 0번째 인덱스부터 배열의 사이즈까지 DFS를 돌린다.
- +일경우 더하고 -일경우 뺀다.
- cnt가 배열사이즈일 경우 target과 sum을 비교하여 같다면 ans를 증가시킨다.
종료.
import java.util.*;
import java.io.*;
class Solution {
static int ans = 0;
public int solution(int[] numbers, int target) {
dfs(numbers, numbers[0], 1, target);
dfs(numbers, -numbers[0], 1, target);
return ans;
}
private static void dfs(int[] numbers,int sum, int cnt, int target){
if(cnt >= numbers.length){
if(sum == target)
ans++;
return;
}
dfs(numbers,sum+numbers[cnt],cnt+1,target);
dfs(numbers,sum-numbers[cnt],cnt+1,target);
}
}
반응형
'2. 알고리즘사이트 > 3. 프로그래머스' 카테고리의 다른 글
단어변환 [프로그래머스][String][DFS][Graph] (0) | 2020.06.05 |
---|---|
네트워크 [프로그래머스][DFS][graph] (0) | 2020.06.05 |
H-Index [프로그래머스][배열] (0) | 2020.06.05 |
문자열을 정수로 바꾸기 [프로그래머스][String] (0) | 2020.06.05 |
수박수박수박수박수박수? [String] (0) | 2020.06.05 |