Algorithm

[Programmers] 타겟 넘버 Java

yerinpark 2023. 10. 9. 16:53

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java

문제 설명

 

그래프의 모든 정점을 순회하면서 target에 해당하는 계산식을 찾는다.

백트래킹이므로 dfs로 구현한다.

class Solution {
	int count = 0;
	
	public int solution(int[] numbers, int target) {
		int answer = 0;
		
		dfs(numbers, target, 0, 0); // depth, result
		answer = this.count;
		
		return answer;
	}
	
	public void dfs(int[] numbers, int target, int depth, int result) {
		if(depth == numbers.length) {
			if(target == result) this.count++;
			return;
		}
		
		int add = result + numbers[depth];
		int sub = result - numbers[depth];
		
		dfs(numbers, target, depth + 1, add);
		dfs(numbers, target, depth + 1, sub);
	}
	
	
	public static void main(String[] args) {
		Solution solution = new Solution();
		
		int[] numbers = {1, 1, 1, 1, 1};
		int target = 3;
		
		int answer = solution.solution(numbers, target);
		System.out.println("Answer = " + answer);
	}
}

 

'Algorithm' 카테고리의 다른 글

[Programmers] Hash > 폰켓몬 (Java)  (0) 2023.10.12
[Programmers] 게임 맵 최단거리 Java  (0) 2023.10.10
DFS와 BFS  (0) 2023.10.09
파일명 정렬  (0) 2023.08.03
[프로그래머스] 방금 그 곡 Java  (0) 2023.08.01