Carnival7
Change Developer
Carnival7
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자바의 정석
    • 프로그래밍 언어별 tools
      • 파이썬
      • 자바
    • 코딩 테스트
      • 백준 강의 기초편
      • 백준 강의 연습편
      • 백준 강의 문제편
      • 삼성 기출
      • 백준 - 일반
      • 카카오 기출
      • 프로그래머스 - 일반
      • 코테 풀이 Tools
    • CS
      • Network
      • 운영체제
      • 알고리즘
      • DB
    • Web_Backend
      • Spring
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
      • 스프링 핵심 원리 - 기본편
    • DevOps
    • IT 업무 지식
      • 인프라
      • 클라우드
    • 자격증
      • AWS - CLF
      • 정처기 - 실기
    • 생각 정리

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DevOps
  • 스프링 부트 무중단 웹 서비스
  • 프로그래머스 #카카오기출 #레벨2
  • DMZ
  • code deploy
  • ci/cd
  • nginx
  • 스프링 #인터셉터 #AOP #필터
  • 알고리즘 #백준강의기초편 #코딩테스트
  • 삼성기출 #2023 #상반기
  • 슬라이딩 윈도우
  • 스프링 #AOP
  • 코딩테스트 #삼성기출 #구현 #시뮬레이션
  • Github Actions
  • 슬라이딩 윈도우 #덱
  • 삼성기출 #백준강의문제편

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Carnival7

Change Developer

프로그래밍 언어별 tools/파이썬

파이썬 순열 조합 구현 및 순열 조합 개념 정리

2021. 10. 4. 18:18

 

 

(Python) 순열, 조합 쉽게 만들기

결론부터 말하자면, 라이브러리에서 불러온 함수와 직접 구현한 함수가 속도차이 10배정도를 보였다. (라이브러리가 훨씬 빠름)
파이썬 documentation에서 어떻게 구현했는지 나중에 차차 확인해봐야 할 것 같다.

 

 

 

 

 

 

1. itertools를 이용하여 순열, 조합 구현하기

 

 

 

 

 

 

1.1 순열(=permutations)


 

 

 

 

 

 

  1. 반복 가능한 객체(=길이가 n인)에 대해서 중복을 허용하지 않고 r개를 뽑아서 나열한다.

  2. 뽑힌 순서대로 나열하기 때문에 순서가 의미가 있다. (즉, 같은 값이 뽑히더라도 순서가 다르면 다른 경우의 수로 취급한다.)

  3. permutations(반복 가능한 객체, r)

 

 

 

 

 

In [1]:

 

 

from itertools import permutations for i in permutations([1,2,3,4], 2): print(i, end=" ")

 

 

 

 

 

 

(1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)

 

 

 

 

 

 

 

1.2 조합(=combinations)


 

 

 

 

 

 

  1. 반복 가능한 객체(=길이가 n인)에 대해서 중복을 허용하지 않고 r개를 뽑는다.

  2. 어떤 것을 뽑는지만 중요하게 보기 때문에 뽑은 순서는 고려하지 않는다.

  3. combinations(반복 가능한 객체, r)

 

 

 

 

 

In [2]:

 

 

from itertools import combinations for i in combinations([1,2,3,4], 2): print(i, end=" ")

 

 

 

 

 

 

(1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)

 

 

 

 

 

 

 

1.3 중복 순열(=product)


 

 

 

 

 

 

  • product(반복 가능한 객체, repeat=1)

 

 

 

 

 

In [3]:

 

 

from itertools import product

 

 

 

 

 

 

In [4]:

 

 

for i in product([1,2,3],'ab'): print(i, end=" ")

 

 

 

 

 

 

(1, 'a') (1, 'b') (2, 'a') (2, 'b') (3, 'a') (3, 'b')

 

 

 

 

 

 

In [5]:

 

 

for i in product(range(3), range(3), range(3)): print(i, end=" ")

 

 

 

 

 

 

(0, 0, 0) (0, 0, 1) (0, 0, 2) (0, 1, 0) (0, 1, 1) (0, 1, 2) (0, 2, 0) (0, 2, 1) (0, 2, 2) (1, 0, 0) (1, 0, 1) (1, 0, 2) (1, 1, 0) (1, 1, 1) (1, 1, 2) (1, 2, 0) (1, 2, 1) (1, 2, 2) (2, 0, 0) (2, 0, 1) (2, 0, 2) (2, 1, 0) (2, 1, 1) (2, 1, 2) (2, 2, 0) (2, 2, 1) (2, 2, 2)

 

 

 

 

 

 

In [6]:

 

 

for i in product([1,2,3], repeat=2): print(i, end=" ")

 

 

 

 

 

 

(1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3)

 

 

 

 

 

 

In [7]:

 

 

for i in product([1,2,3], repeat=3): print(i, end=" ")

 

 

 

 

 

 

(1, 1, 1) (1, 1, 2) (1, 1, 3) (1, 2, 1) (1, 2, 2) (1, 2, 3) (1, 3, 1) (1, 3, 2) (1, 3, 3) (2, 1, 1) (2, 1, 2) (2, 1, 3) (2, 2, 1) (2, 2, 2) (2, 2, 3) (2, 3, 1) (2, 3, 2) (2, 3, 3) (3, 1, 1) (3, 1, 2) (3, 1, 3) (3, 2, 1) (3, 2, 2) (3, 2, 3) (3, 3, 1) (3, 3, 2) (3, 3, 3)

 

 

 

 

 

 

 

1.4 중복 조합(=combinations_with_replacement)


 

 

 

 

 

 

  • combinations_with_replacement(반복 가능한 객체, r)

 

 

 

 

 

In [8]:

 

 

from itertools import combinations_with_replacement for cwr in combinations_with_replacement([1,2,3,4], 2): print(cwr, end=" ")

 

 

 

 

 

 

(1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4)

 

 

 

 



출처: https://juhee-maeng.tistory.com/91 [simPLE]

'프로그래밍 언어별 tools > 파이썬' 카테고리의 다른 글

zip 함수 정리  (0) 2021.10.05
파이썬 eval 함수  (0) 2021.10.05
파이썬 우선순위 큐, 힙큐  (0) 2021.10.02
리스트 정렬 sort, sorted 활용법  (0) 2021.10.01
파이썬 reduce 함수 사용법  (0) 2021.09.29
    '프로그래밍 언어별 tools/파이썬' 카테고리의 다른 글
    • zip 함수 정리
    • 파이썬 eval 함수
    • 파이썬 우선순위 큐, 힙큐
    • 리스트 정렬 sort, sorted 활용법
    Carnival7
    Carnival7

    티스토리툴바