728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
static int target;
static int cnt = 0;
public int solution(int[] numbers, int target) {
// DFS, 백트래킹 > 만들 수 있는 숫자 다 만들어보기 > target이랑 일치하면 카운트
this.target = target;
dfs(numbers,0, 0);
return cnt;
}
public static void dfs(int[] numbers, int idx, int sum){
if(idx == numbers.length) {
// 모든 숫자 사용한 경우
if(sum == target){
cnt++;
}
return;
}
dfs(numbers, idx+1, sum-numbers[idx]);
dfs(numbers, idx+1, sum+numbers[idx]);
}
}
모음 사전은 모음을 모두 사용하지 않아도 타겟 단어 찾을 수 있음 > 조기 종료 조건 작성하기
타겟 넘버는 주어진 숫자를 다 사용해서 타겟 넘버를 찾는 거임 > 조기 종료 조건X, 주어진 숫자 다 사용하는게 종료 조건
[Lv.2] 모음 사전 : Java
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 만들 수 있는 문자열이 몇 개 없으니까 다 만들어보기DFS + 백트래킹 > 원하는 단
say021.tistory.com
'피로도' 문제에서는 for문 사용하고 '타겟 넘버'에서는 사용 안하는 이유
>타겟 넘버는 사용할 numbers의 순서 정해져 있음 => 정해야 하는 건 +/- 선택뿐
>던전은 순서 정해져 있지 않음 =>for문으로 모든 후보 탐색
https://say021.tistory.com/180
'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.3] 단어 변환 : Java (0) | 2025.10.15 |
|---|---|
| [Lv.2] 최댓값과 최솟값 : Java (0) | 2025.10.14 |
| [Lv.2] 모음 사전 : Java (0) | 2025.09.26 |
| [Lv.2] 전력망을 둘로 나누기 : Java (0) | 2025.09.26 |
| [Lv.2] 카펫 : Java (0) | 2025.09.26 |