itertools
: 반복되는 형태의 데이터를 처리하기 위해 유용한 기능들을 제공
•
순열과 조합 라이브러리 → 완전탐색(모든 경우의 수)
from itertools import permutations
data = ['A','B','C']
result = list(permutations(data,3)) # 모든 가능한 순열 구하기
print(result)
# [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
Python
복사
from itertools import combinations
data = ['A','B','C']
result = list(combinations(data,2)) # 2개를 뽑는 모든 조합 구하기
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'C')]
Python
복사
from itertools import product # 중복 순열
data = ['A','B','C']
result = list(product(data, repeat=2)) # 2개를 뽑는 모든 순열 구하기(중복 허용)
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
Python
복사
from itertools import combinations_with_replacement
data = ['A','B','C']
result = list(combinations_with_replacement(data, 2)) # 2개를 뽑는 모든 조합 구하기(중복 허용)
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
Python
복사
heapq
: heap(힙) 자료 구조를 제공
•
우선순위 큐 기능을 구현하기 위해 사용 → 최단경로
bisect
: 이진 탐색 기능을 제공
collections
: 덱, 카운터 등의 유용한 자료구조를 포함
•
Counter : 등장 횟수를 세는 기능
리스트와 같은 반복 가능한 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지를 알려준다.
from collections import Counter
counter = Counter(['red','blue','red','green','blue','blue'])
print(counter['blue']) # 'blue'가 등장한 횟수 출력
print(counter['green']) # 'green'이 등장한 횟수 출력
print(dict(counter)) # 사전 자료형으로 반환
'''
3
1
{'red': 2, 'blue': 3, 'green': 1}
'''
Python
복사
math
: 필수적인 수학적 기능 제공
•
팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이와 같은 상수를 포함
•
최대공약수와 최소공배수
1) 최대공약수 : gcd()
import math
# 최소 공배수(lcm)을 구하는 함수
def lcm(a,b):
return a * b // math.gcd(a,b)
a = 21
b = 14
print(math.gcd(a,b)) # 최대공약수 계산
print(lcm(a,b)) # 최소공배수 계산
'''
7
42
'''
Python
복사