BOJ 9005 1, 2, 3 더하기

문제출저

  • 정수 n이 주어졌을때, n을 1,2,3의 합으로 나타내는 방법의 수를 구하는 프로그램 작성

풀이

숫자를 count개를 사용해서 합(sum)을 만들었을때, 그 합이 목표값(target)이 되는 경우의 수를 구하는 함수를 countCase(int count, int sum, int target).이라고 하자.

숫자가 1인 경우 countCase(count + 1, sum + 1, target)이 되고,
숫자가 2인 경우 countCase(count + 1, sum + 2, target)이 되고,
숫자가 3인 경우 countCase(count + 1, sum + 3, target)이 된다.

위의 경우의 수를 조합해서 sum이 goal이 될때를 체크해주면 경우의 수를 구할 수 있다.


소스코드

public int countCase(int count, int sum, int target) {
	if (sum > target ) {
    	return 0;
    }
    if (sum == target) {
    	return 1;
    }
    int case = 0;
    for(int i = 1; i <= 3 ; i++) {
    	case += countSum(count + 1, sum + 1, target)
    }
	return case;
}