문제

programmers 타겟 넘버 문제 보러가기



풀이

class Solution {
	static boolean[] used;
	static int[] nums;
	static int answer;

	public int solution(int[] numbers, int target) {
		answer = 0;
		nums = numbers;
		used = new boolean[numbers.length];

		dfs(0, 0, target);

		return answer;
	}

	static void dfs(int idx, int sum, int target) {
		if (idx == nums.length) {
			if (sum == target)
				answer++;

			return;
		}

		dfs(idx + 1, sum + nums[idx], target);
		dfs(idx + 1, sum - nums[idx], target);
	}
}



문제점 해결

주어진 숫자들(numbers)를 사용해 target을 만드는 방법의 수를 구하는 문제로 DFS를 공부할 수 있는 기본적인 문제였다고 생각한다.