[Python] 파이썬 순열 조합 / Python permutation(), combination()

2021. 1. 18. 11:36·Language/Python
반응형
👀 함수 ( permutations() / combinations() ) 👀
1. permutations() : 어떤 iterator에 대한 순열을 얻는 함수 
2. combinations() : 어떤 iterator에 대한 조합을 얻는 함수 

 

순열과 조합 모두 itertools라는 패키지의 모듈입니다. 알고리즘 문제를 풀다보면 가짓수에 대해 생각해야할 경우가 있는데, 이 두 함수를 사용하면 좀 더 간단하게 해결할 수 있는 경우가 존재합니다.

 

1. permutation() : 순열(nPr)

  • 순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미
  • 순서가 상관있으므로 [1,2,3] != [3,2,1]
  • 리스트, 튜플, 딕셔너리 모두 가능
from itertools import permutations

a = [1, 2, 3]
b = (1, 2, 3)
c = {"m": 1, "n": 2, "o": 3}

print("aP2:", list(permutations(a, 2)))
print("aP3:",list(permutations(a, 3)))

print("bP2:",list(permutations(b, 2)))
print("bP3:",list(permutations(b, 3)))

print("cP2:",list(permutations(c, 2)))
print("cP3:",list(permutations(c, 3)))


# 출력
# aP2: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
# aP3: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

# bP2: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
# bP3: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

# cP2: [('m', 'n'), ('m', 'o'), ('n', 'm'), ('n', 'o'), ('o', 'm'), ('o', 'n')]
# cP3: [('m', 'n', 'o'), ('m', 'o', 'n'), ('n', 'm', 'o'), ('n', 'o', 'm'), ('o', 'm', 'n'), ('o', 'n', 'm')]

 

2. combinations() : 조합 (nCr)

  • 조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미

  • 순서가 상관 없으므로 [1,3] = [3,1]

  • 리스트, 튜플, 딕셔너리 모두 가능

from itertools import combinations

a = [1, 2, 3]
b = (1, 2, 3)
c = {"m": 1, "n": 2, "o": 3}

print("aC2:", list(combinations(a, 2)))
print("aC3:",list(combinations(a, 3)))

print("bC2:",list(combinations(b, 2)))
print("bC3:",list(combinations(b, 3)))

print("cC2:",list(combinations(c, 2)))
print("cC3:",list(combinations(c, 3)))

# 출력
# aC2: [(1, 2), (1, 3), (2, 3)]
# aC3: [(1, 2, 3)]

# bC2: [(1, 2), (1, 3), (2, 3)]
# bC3: [(1, 2, 3)]

# cC2: [('m', 'n'), ('m', 'o'), ('n', 'o')]
# cC3: [('m', 'n', 'o')]

 

 

 

 

<참고>

coding-factory.tistory.com/606

반응형

'Language > Python' 카테고리의 다른 글

[Python] 파이썬 정렬 다중 조건, 파이썬 정렬 키 여러개  (0) 2021.01.24
[Python] 파이썬 나눗셈 나머지, 몫 구하기 ( / , %, // , divmod)  (0) 2021.01.12
[Python] upper(), lower() 함수 / 파이썬 문자열 대문자 소문자 변환  (0) 2021.01.12
[Python] islower(), isupper() 함수 / 파이썬 문자열 대문자 소문자 체크  (0) 2021.01.12
[Python] isalpha(), isdigit() 함수 / 문자열 체크하기  (0) 2021.01.12
'Language/Python' 카테고리의 다른 글
  • [Python] 파이썬 정렬 다중 조건, 파이썬 정렬 키 여러개
  • [Python] 파이썬 나눗셈 나머지, 몫 구하기 ( / , %, // , divmod)
  • [Python] upper(), lower() 함수 / 파이썬 문자열 대문자 소문자 변환
  • [Python] islower(), isupper() 함수 / 파이썬 문자열 대문자 소문자 체크
개발하는 사막여우
개발하는 사막여우
개발개발 주저리주저리
    반응형
  • 개발하는 사막여우
    개발하는 사막여우
    개발하는 사막여우
  • 전체
    오늘
    어제
    • All (311)
      • Books (13)
        • 읽기 좋은 코드가 좋은 코드다 (13)
      • Study (6)
        • Blockchain (3)
        • Algorithm (3)
      • Baekjoon (36)
      • Programmers (166)
      • LeetCode (15)
      • Open Source (1)
        • Youtube Popout Player (1)
      • Language (32)
        • Python (9)
        • JS (8)
        • Java (5)
        • HTML (6)
        • CSS (4)
      • Library & Framework (15)
        • React.js (15)
      • IDE (2)
        • IntelliJ (2)
      • Airdrop (9)
      • Tistory (2)
      • etc.. (7)
        • Cozubi (6)
        • lol-chess (0)
  • 블로그 메뉴

    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    백준
    코주비
    Java
    신규 코인 에어드랍
    2018 KAKAO BLIND RECRUITMENT
    프로그래머스 위클리 챌린지
    programmers
    Python
    클린 코드
    카카오 코딩테스트
    카카오 공채
    클린 코드 작성법
    알고리즘문제풀이
    프로그래머스
    카카오 알고리즘 문제
    코인줍줍
    파이썬
    Cozubi
    읽기 좋은 코드가 좋은 코드다
    코딩테스트연습
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
개발하는 사막여우
[Python] 파이썬 순열 조합 / Python permutation(), combination()
상단으로

티스토리툴바