Programming/코딩테스트
[코딩테스트] python 주요 라이브러리 정리
aram
2023. 4. 20. 22:54
* 이것이 취업을 위한 코딩 테스트다 with 파이썬의 부록A를 참고하였습니다.
# eval()
문자열 형식의 수식 계산
# itertools : 반복되는 형태의 데이터 처리
- 순열 : data에서 r개를 뽑아 일렬로 나열하는 모든 경우
from itertools import permutations
data = []
print(list(permutaions(data, 3)))
- 조합 : data에서 r개를 뽑아 순서 고려x 나열하는 모든 경우
from itertools import combinations
data = []
print(list(combinations(data, 2)))
- 중복가능한 순열
from itertools import product
data = []
print(list(product(data, repeat=2))) #r=2
- 중복가능한 조합
from itertools import combinations_with_replacement
data = []
print(list(combinations_with_replacement(data, 2)))
# heapq : 힙(heap)기능 O(NlogN)
- 우선순위 큐 기능 구현
- 파이썬의 힙은 최소 힙 구성 == 최상단 원소는 항상 "가장 작은" 원소
import heapq
# 힙 삽입
heapq.heappush('담을 리스트', value)
# 힙의 원소 빼기
heapq.heappop('뺄 원소가 존재하는 리스트')
- 최대 힙 == 부호 반대로
import heapq
# 힙 삽입
heapq.heappush('담을 리스트', -value)
# 힙의 원소 빼기
-heapq.heappop('뺄 원소가 존재하는 리스트')
# bisect : 이진탐색 O(logN)
- 정렬된 배열에서 특정 원소를 찾을 때 best
- 정렬된 배열에서 [left_value, right_value]에 속하는 데이터 개수 반환 가능 : right_index - left_index
from bisect import bisect_left, bisect_right
#정렬순서 유지, 왼쪽에서 오른쪽으로 value를 찾음 ( → )
bisect_left('정렬된 리스트', value)
#정렬순서 유지, 오른쪽에서 왼쪽으로 value를 찾음 ( ← )
bisect_right('정렬된 리스트', value)
## >> 각 위치의 인덱스 반환
# collections : 데큐, 카운터 등
- deque : 큐 구현
> 리스트와 데큐를 비교했을 때 데큐가 상대적으로 빠름
from collections import deque
data = deque([])
#첫 번째 원소 삽입
data.appendleft(x)
#마지막에 원소 삽입
data.append(x)
#첫 번째 원소 제거
data.popleft()
#마지막 원소 제거
data.pop()
- Counter : 등장 횟수를 자료형은 Counter지만 dict 형태이기에 딕셔너리처럼 사용가능. 딕셔너리와 달리 연산 가능.
from collections import Counter
c = Counter([])
# import math : 수학 연산
- math.factorial(x) : x 팩토리얼 연산 결과 반환
- math.sqrt(x) : x의 제곱근 반환
- math.gcd(a, b) : a와 b의 최대 공약수 반환
- math.pi : 파이(pi) 출력
- math.e : 자연상수e 출력