ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [기능] 파이썬 순열, 조합 (Permutations, Combinations)
    Language Study/Python 2021. 4. 6. 04:26

    순열 (nPr)

    순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 있음)

    조합 (nCr)

    조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 없음)

     

    프로그램을 짜다보면 순열과 조합을 사용하는 상황이 종종 발생한다.
    그런 순간에 직접 재귀나 반복문을 이용하여 구현할 수 있지만 파이썬은 모듈을 이용하여 쉽게 사용할 수 있다.

    바로 itertoolspermutationscombinations이다.

    import itertools
    
    chars = ['A', 'B', 'C']
    
    perm = itertools.permutations(chars, 2)  # 순열
    comb = itertools.combinations(chars, 2)  # 조합
    
    
    print(list(perm))
    print(list(comb))

    위의 코드처럼 두 기능을 사용할 수 있다.
    첫번째 인자는 조합할 요소들이 들어있는 list, tuple과 같은 컨테이너 타입의 변수이고 두번째 인자는 몇 개로 조합할지 나타내는 변수이다.
    permutations의 경우에는 두 번째 인자를 할당하지 않으면 첫 번째 인자의 전체의 길이가 기본값으로 설정된다.

    위 기능을 실행하게되면
    perm에 itertools.permutations object, comb에 itertools.combinations object가 반환되기 때문에 출력하기 위해서
    list와 같은 형태로 변환해야한다. 

    perm = list(perm) 과 comb = list(comb) 같이 캐스팅하는 것으로 변경이나 참조를 쉽게할 수 있다.

    실행 결과

    perm
    [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
    
    comb
    [('A', 'B'), ('A', 'C'), ('B', 'C')]

     

    위의 기능을 이용하는 것으로 쉽게 순열과 조합을 구현하여 사용했으면 좋겠다.

    댓글

From BlackHair