[java] 프로그래머스 - 타겟넘버

최대 1 분 소요

업데이트:

문제

프로그래머스-타겟넘버
더하기와 빼기로 조합해서 target의 결과를 가지는 개수를 구하는 문제.

풀이

dfs로 더하거나, 빼면서 들어가고 index가 배열의 크기까지 도달한다면 결과를 리턴하면 되는 간단한 ?? 문제
함수 중간에 sum(현재 계산된 값)이 target(맞춰야하는 수)보다 크면 그냥 종료시킬뻔 했지만,, 현재보다 후의 인덱스 숫자가 마이너스로 바로 target으로 맞춰줄 가능성이 있기때문에 끝까지 다 진행을 해봐야한다

문제를 풀고 난 후 다른사람들의 코드를 봤는데
굳이 plus + minus 변수 선언안하고 그냥 바로 return문 에서 함수를 연결해서 써도 충분할듯.. 약간 파이써닉한 코드처럼..?

소스코드

class Solution {
	public int solution(int[] numbers, int target) {
		int answer = 0;
		answer = dfs(numbers, target, 0, 0);
		return answer;
	}

	private int dfs(int[] numbers, int target, int idx, int sum) {
		if (idx == numbers.length) {
			if (target == sum) {
				return 1;
			}
			return 0;
		}
		int plus = dfs(numbers, target, idx + 1, sum + numbers[idx]);
		int minus = dfs(numbers, target, idx + 1, sum - numbers[idx]);
		return plus+minus;
	}
}

댓글남기기