조합과 순열

KimRiun·2025년 4월 11일
0

알고리즘_문제

목록 보기
32/33

돌아서면 자꾸 잊는 조합과 순열 코드

조합

  • 인덱스 하나씩 늘려가는 것이 중요. comb 호출할 때 idx+1이 아니라 i+1
    private static void comb(int n, int idx, int cnt, int[] path) {
        if(cnt == n) {
            return;
        }
        
        for(int i = idx; i < list.size(); i++) {
            path[cnt] = i;
            comb(n, i+1, cnt+1, path);
        }
    }

순열

  • i=0 부터 시작
private static boolean[] visited; // 방문 체크

private static void perm(int n, int cnt, int[] path) {
    if (cnt == n) {
        return;
    }

    for (int i = 0; i < list.size(); i++) {
        if (visited[i]) continue;

        visited[i] = true;
        path[cnt] = i;
        perm(n, cnt+1, path);
        visited[i] = false;
    }
}
profile
Java, JavaScript

0개의 댓글