티스토리 뷰

상기 두 함수는 같은 역할을 함!

for (int i = 0; i < numbers.length; i++) {
    for (int j = i + 1; j < numbers.length; j++) {
        for (int k = j + 1; k < numbers.length; k++) {
            for (int l = k + 1; l < numbers.length; l++) {
                // 여기서 numbers[i], numbers[j], numbers[k], numbers[l]로 네 개의 숫자를 선택함
                if (numbers[i] + numbers[j] + numbers[k] + numbers[l] == 0) {
                    // 조건을 만족하면 카운트
                }
            }
        }
    }
}
public class CombinationExample {

    public static int countZeroSumCombinations(int[] numbers) {
        return combination(numbers, 0, 4, 0);
    }

    private static int combination(int[] numbers, int start, int r, int sum) {
        // 기저 조건: 4개의 숫자를 모두 선택했을 때
        if (r == 0) {
            return sum == 0 ? 1 : 0; // 합이 0이면 1을 반환, 아니면 0 반환
        }

        int count = 0;
        for (int i = start; i < numbers.length; i++) {
            // numbers[i]를 포함한 조합을 만들고, r을 1 감소시켜 재귀 호출
            count += combination(numbers, i + 1, r - 1, sum + numbers[i]);
        }

        return count;
    }

    public static void main(String[] args) {
        int[] numbers = {-2, 3, 0, 2, -5, 1, -1};
        int result = countZeroSumCombinations(numbers);
        System.out.println("합이 0이 되는 경우의 수: " + result);
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함