Algorithm/programmers

타겟넘버

마닐라 2022. 2. 24. 13:58

📍 문제 설명

https://programmers.co.kr/learn/courses/30/lessons/43165

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수

programmers.co.kr

 

💡 접근

다 더하는거 ~ 다 빼는거 중에서 target인 숫자 찾는 DFS 문제

 

👩‍💻 코드

import java.util.*;

class Solution {
    static int[] dx = {-1,1,0,0};
    static int[] dy = {0,0,-1,1};
    static char[] c = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
    static int[] arr;
    static char[] arr2;
    static HashMap<Character, Integer> map;
    static boolean[] visited;
    static int[] clone;
    static int answer;

    public int solution(int[] numbers, int target) {
        clone = numbers;
        visited = new boolean[numbers.length];
        DFS(0, 0, target);
        System.out.println(answer);
        return answer;
    }

    private void DFS(int L, int sum, int target) {
        if(L == clone.length) {
            if(target == sum) {
                answer++;
            }
        }
        else {
            DFS(L+1, sum+clone[L], target);
            DFS(L+1, sum-clone[L], target);
        }
    }

    public static void main(String[] args) {
        Solution s = new Solution();

        int[] numbers = {1, 1, 1, 1, 1};
        int target = 3;
        s.solution(numbers, target);
    }
}

'Algorithm > programmers' 카테고리의 다른 글

[2021 카카오 블라인드]메뉴 리뉴얼  (0) 2022.03.28
[2021 데브매칭]행렬 테두리 회전하기  (0) 2022.02.24
더 맵게  (0) 2022.02.24
기능개발  (0) 2022.02.24
[2017 카카오코드]단체사진 찍기  (0) 2022.02.23