백준 2798 조합문제

이기현·2020년 7월 26일

코딩테스트 준비

목록 보기
4/20

조합을 이용해서 풀어야 하는 문제인것은 알았다, 하지만 재귀나, 백트레킹을 이용해서 직접 조합을 구현하는 것이 어려워서 인터넷상에 있는 코드를 보고 조합 부분을 구현했는데, 실제로 코딩테스트를 보러가면 외부 코드 참조가 안되는거 맞나? 만약 그렇다면 조합을 구하는 코드를 직접 짜야 하는데, 나중에 틈틈히 보고 익숙해지도록 하자

    static void combination(int[] arr, boolean[] visited, int start, int n, int r) {
        if (r == 0) {
            print(arr, visited, n);
            return;
        }

        for (int i = start; i < n; i++) {
            visited[i] = true;
            combination(arr, visited, i + 1, n, r - 1);
            visited[i] = false;
        }
    }
    
    static void print(int[] arr, boolean[] visited, int n) {
    	int sum = 0;
        for (int i = 0; i < n; i++) {
            if (visited[i]) {
                sum += arr[i];
            }
            
        }
        cnt++;
        num.add(sum);
    }
    참조 : https://bcp0109.tistory.com/15
    ~~~
profile
실력을 쌓아가는 하루하루

0개의 댓글