매일공부

[코딩테스트] python 주요 라이브러리 정리 본문

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 : 큐 구현

출처 : https://asxpyn.tistory.com/72

> 리스트와 데큐를 비교했을 때 데큐가 상대적으로 빠름

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 출력

 

Comments