1. 실전에서 유용한 표준 라이브러리
- 내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공한다.
- 파이썬 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다.
- itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공한다.
- 특히 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용된다.
- 모든 경우의 수를 고려해야 하는 경우에서 많이 활용된다.
- 완전 탐색 유형 문제에서 소스 코드를 간결하게 만들어준다.
- heapq : 힙(Heap) 자료구조를 제공한다.
- 일반적으로 우선순위 큐 기능을 구현하기 위해 사용된다.
- 최단경로 알고리즘에서 많이 활용된다.
- bisect : 이진 탐색(Binary Search) 기능을 제공한다.
- collections : 덱 (deque), 카운터 (Counter) 등의 유용한 자료구조를 포함한다.
- math : 필수적인 수학적 기능을 제공한다.
- 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수를 포함한다.
2. 순열과 조합
- 모든 경우의 수를 고려해야 할 때 어떤 라이브러리를 효과적으로 사용할 수 있을까요?
- 순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
- {'A', 'B', 'C'}에서 세 개를 선택하여 나열하는 경우 : 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
from itertools import permutations
data = ['A', 'B', 'C'] # 데이터 준비
result = list(permutations(data, 3)) # 모든 순열 구하기
print(result)
- 조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r 개를 선택하는 것
- {'A', 'B', 'C'} 에서 순서를 고려하지 않고 두 개를 뽑는 경우 : 'AB', 'AC', 'BC'
from itertools import combinations
data = ['A', 'B', 'C'] # 데이터 준비
result = list(combinations(data, 2)) # 2개를 뽑는 모든 조합 구하기
print(result)
3. 중복 순열과 중복 조합
from itertools import product
data = ['A', 'B', 'C'] # 데이터 준비
result = list(product(data, repeat = 2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용)
print(result)
from itertools import combinations_with_replacement
data = ['A', 'B', 'C'] # 데이터 준비
result = list(combinations_with_replacement(data, 2)) # 2개를 뽑는 모든 조합 구하기 (중복 허용)
print(result)
4. Counter
- 파이썬 collections 라이브러리의 Couter는 등장 횟수를 세는 기능을 제공한다.
- 리스트와 같은 반복 가능한 (iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지를 알려준다.
5. 최대 공약수와 최소 공배수
- 최대 공약수를 구해야 할 때는 math 라이브러이의 gcd() 함수를 이용할 수 있다.