코딩테스트 준비 💻/TIP 📝

[코딩테스트] 자바 Java, 순열과 조합: 순열

ImYena 2021. 11. 19. 17:28
728x90

순열과 조합

순열 Permutation : nPr

  • 서로 다른 n개 중의 r개를 뽑을 때, 순서를 포함한 경우의 수
  • 중복 가능한 n개 중 r개를 뽑으면, 중복 순열

 

예시

{A, B} 중 2개를 뽑는 순열 : {A, B,}, {B, A}

 

조합 Combination : nCr

  • 서로 다른 n개 중의 r개를 뽑을 때, 순서의 상관없이 뽑는 경우의 수
  • 중복 가능한 n개 중 r개를 뽑으면, 중복 조합

 

예시

{A, B} 중 2개를 뽀는 조합 : {A, B}


순열의 개수

nPk =  n! / (n-k)!

 

순열의 개수 구하기 예시(JAVA)

public class NumberOfPermutation {
    public static void main(String[] args) {
        int n = 3, r = 3;

        System.out.println("순열(nPr)의 개수: " + getNumberOfPermutation(n, r));
    }

    public static int getNumberOfPermutation(int n, int r) {
        return factorial(n) / factorial(n-r) ;
    }

    public static int factorial(int i) {
        if(i <= 1) return 1;
        else return i * factorial(i-1);
    }
}

결과 출력

순열(nPr)의 개수: 6

 

순열 사용 예시(JAVA)

import java.util.HashSet;
import java.util.Iterator;

public class Permutation {
    public static void main(String[] args) {
        String str = "123";

        permutation("", str);
    }

    public static void permutation(String s1, String s2) {
        if(!s1.equals("")) {
            System.out.println(Integer.valueOf(s1));
        }

        for(int i=0; i<s2.length(); i++) {
            permutation(s1+s2.charAt(i), s2.substring(0, i)+s2.substring(i+1));
        }
    }
}

결과 출력

1
12
123
13
132
2
21
213
23
231
3
31
312
32
321

 

728x90
반응형