간단한 itertools 사용법 정리

정현서·2020년 12월 21일
0

코딩 테스트

목록 보기
2/4

itertools 사용에 대한 간단 정리입니다.
문제 접근 시
1, 요소에 대한 중복 사용이 허용되는지
2, 순서를 고려하는지
위 두가지를 잘 보고 순열, 중복 순열, 조합, 중복 조합 중 알맞는 풀이법을 선택해야 합니다.

추가적으로, 아래 itertools 모듈들은 전부 DFS로 구현이 가능하니 연습해 보는 것을 추천드립니다.

순열

permutations

요소 선택시 중복을 고려하여 순열을 만듭니다.
각각의 순열은 순서를 고려합니다.
즉, 순열에서 [1, 2, 3]과 [1, 3, 2]는 다른 케이스입니다.

사용

from itertools import permutations

n , m = 4, 2
permu = permutations(range(1, n+1), m)
for i in permu: 
  print(*i)

중복 순열

product

요소 선택시 중복을 고려하지 않고 순열을 만듭니다.
각각의 순열은 순서를 고려합니다.
즉, 중복 순열에서 [1, 1, 3]과 [1, 3, 1]는 다른 케이스입니다.

사용

from itertools import product

# n개의 숫자 중 m개 뽑기
n , m = 4, 2
prod = product(range(1, n+1),repeat = m)

for i in prod: 
  print(*i)

# 요소 리스트 간의 순열
a1 = [1, 2, 3, 4]
a2 = 'abcd'
prod = product(a1, a2)

for i in prod: 
  print(*i)

조합

combinations

요소 선택시 중복을 고려하여 조합을 만듭니다.
각각의 조합은 순서를 고려하지 않습니다.
즉, 조합에서 [1, 2, 3]과 [1, 3, 2]는 같은 케이스입니다.

사용

from itertools import combinations

n , m = 4, 2
combi = combinations(range(1, n+1), m)

for i in combi:
  print(*i)

중복 조합

combinations_with_replacement

요소 선택시 중복을 고려하지 않고 조합을 만듭니다.
각각의 조합은 순서를 고려하지 않습니다.
즉, 조합에서 [1, 1, 3]과 [1, 3, 1]는 같은 케이스입니다.

사용

from itertools import combinations_with_replacement

n , m = 4, 2
combiWR = combinations_with_replacement(range(1, n+1), m)

for i in combiWR:
  print(*i)
profile
현서맨

0개의 댓글