티스토리 뷰

반응형

Java에는 이상하게도 순열 라이브러리가 없다.

그래서 순열이 필요할 경우 직접만들어서 사용해야한다.

 

    static List<int[]> permResult = new ArrayList<>();
    static int[] output;
    static int n, r;
    static boolean[] visited;

    public static void perm(int cnt) {
        if (cnt == r) {
            permResult.add(output.clone()); // 깊은 복사로 새롭게 넣어줘야함
            return;
        }
        for (int i = 0; i < n; i++) {
            if (visited[i]) continue;
            output[cnt] = i;
            visited[i] = true;
            perm(cnt + 1);
            visited[i] = false;
        }
    }

 

# 순열 계산

n개 중 r개를 선택하는 순열을 찾고자 할 때 사용한다.

output은 1,2,3처럼 순열 경우를 임시로 저장하는 버퍼이다. visited와 output을 꼭 할당해줘야 NPE가 발생하지 않는다.

 

결과값은 이렇게 나온다.

위 처럼 출력하고 싶으면 해당 코드를 작성하면 된다.

 

(파이썬의 itertools가 그립다..)

반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크