삼총사

seheeee_97·2023년 12월 15일
0

회고팀

목록 보기
30/41





for문 버전

class Solution {
    public int solution(int[] number) {
        int count = 0;
        
        for(int i=0; i<number.length-2; i++) {
            for(int j=i+1; j<number.length-1; j++) {
                for(int k=j+1; k<number.length; k++) {
                    if(number[i]+number[j]+number[k] == 0)
                        count++;
                }
            }
        }
        return count;
    }
}







재귀 함수 버전

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public int solution(int[] number) {
        int count = 0;
        List<List<Integer>> three = Combi1(number);

        // 결과 출력
        for(List<Integer> line : three) {
            if(line.get(0) + line.get(1) + line.get(2) == 0)
                count++;
        }
        return count;
    }

    private static List<List<Integer>> Combi1(int[] number) {
        List<List<Integer>> result = new ArrayList<>();
        Combi2(number, 0, new ArrayList<>(), result);
        return result;
    }

    private static void Combi2(int[] number, int index, List<Integer> current, List<List<Integer>> result) {
        if(current.size() == 3) {
            result.add(new ArrayList<>(current)); // 3개가 되면 결과에 추가
            return;
        }

        for(int i = index; i < number.length; i++) {
            current.add(number[i]);
            Combi2(number, i + 1, current, result); // 다음 원소로 재귀 호출
            current.remove(current.size() - 1); // 백트래킹?
        }
    }
}




https://school.programmers.co.kr/learn/courses/30/lessons/131705

0개의 댓글