개발하는 사막여우
개발하는 사막여우
개발하는 사막여우
전체 방문자
오늘
어제
  • All (310)
    • 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.. (12)
      • Cozubi (6)
      • lol-chess (0)

블로그 메뉴

  • Github

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
개발하는 사막여우

개발하는 사막여우

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

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

2021. 1. 18. 11:36
반응형
👀 함수 ( 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() 함수 / 파이썬 문자열 대문자 소문자 체크
    개발하는 사막여우
    개발하는 사막여우
    개발개발 주저리주저리

    티스토리툴바