Algorithm/Programmers

[Lv.2] 타겟 넘버 : Java

say! 2025. 9. 27. 09:25
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