표준 라이브러리란
정의 & 특징
- 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리를 의미.
- 코딩 테스트를 위해 반드시 알아야 하는 라이브러리는 대략 6가지 정도이며 아래와 같다.
내장 함수
: 기본 내장 라이브러리이다.
itertools
: python에서 반복되는 형태의 데이터를 처리하는 기능을 제공하는 라이브러리이다. 순열과 조합 라이브러리를 제공한다.
heapq
: 힙 기능을 제공하는 라이브러리이다. 우선순위 큐 기능을 구현하기 위해 사용된다.
bisect
: 이진 탐색(binary search) 기능을 제공하는 라이브러리이다.
collections
: 덱(deque), 카운터(counter) 등의 유용한 자료구조를 포함하고 있는 라이브러리이다.
math
: 팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이와 같은 상수를 포함하고 있다.
- 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리
- 코딩 테스트에서 가장 유용하게 쓰이는 클래스는
permutations, combinations
이다.
- 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)을 계산한다.
- permutations는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.
permutations 예시 소스코드
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 3))
print(result)
- 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)을 계산.
- combinations는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.
combinations 예시 소스코드
from itertools import combinations
data = ['a', 'b', 'c']
result = list(combinations(data, 2))
print(result)
- 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)을 계산한다.
- 다만, 원소를 중복하여 뽑는다.
- product 객체를 초기화할 때는 뽑고자 하는 데이터의 수를 repeat 속성값으로 넣어준다.
- product는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.
product 예시 소스코드
from itertools import product
data = ['a', 'b', 'c']
result = list(product(data, repeat=2))
print(result)
bisect
이진 탐색
을 쉽게 구현할 수 있도록 bisect 라이브러리를 제공.
- 정렬된 배열에서 특정한 원소를 찾아야 할 때 매우 효과적으로 사용
- bisect_left()와 bisect_right()가 핵심 함수이며 O(logN)에 작동함.
- bisect_left(a, x): 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
- bisect_right(a, x): 정렬된 순서를 유지하도록 리스트 a에 데이터 x를 삽입할 때 가장 오른쪽 인덱스를 찾는 메서드
- 정렬된 리스트에서 값이 특정 범위에 속하는 원소의 개수를 구하고자 할 때, 효과적으로 사용할 수 있다.
bisect 예시 소스코드
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
print(bisect_left(a, x))
print(bisect_right(a, x))
bisect 예시 소스코드 2
from bisect import bisect_left, bisect_right
def count_by_range(a, left_value, right_value):
right_index = bisect_right(a, right_value)
left_index = bisect_left(a, left_value)
return right_value - left_value
a = [1, 2, 3, 3, 3, 3, 4, 4, 8, 9]
print(count_by_range(a, 4, 4))
print(count_by_range(a, -1, 3))
collections
- 코딩 테스트에서는
deque
와 counter
가 핵심으로 쓰인다.
collections: counter
등장 횟수를 세는 기능을 제공
- 리스트와 같은 iterable 객체가 주어졌을 때, 해당 객체 내부의 원소가 몇 번씩 등장했는지를 알려준다.
counter 예시 소스코드
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue'])
print(dict[counter])
출처 & 깃허브
이것이 취업을 위한 코딩 테스트다 with python
github