코딩테스트 기록/08. TIL

파이썬 코테 라이브러리 정리

박세류 2023. 11. 5. 01:24

✍학습 키워드


1. itertools 라이브러리

⇒ 순열과 조합을 쉽게 구현할 수 있는 라이브러리.

from itertools import permutations

x = ['a', 'b', 'c']
y = list(permutations(x, 2))
print(y)

#[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
  • permutations 함수는 ‘a’, ‘b’, ‘c’에서 2개를 뽑아 나열하는 모든 순열을 리턴해준다.
from itertools import combinations

x = ['a', 'b', 'c']
y = list(combinations(x, 2))

#[('a', 'b'), ('a', 'c'), ('b', 'c')]
  • combinations는 3개의 문자 열에서 순서를 고려하지 않고 2개를 뽑는 모든 조합을 리턴해준다.

 

2. 우선순위 큐

⇒ 각 원소들이 우선순위를 가지고 있는 자료형이다. 높은 우선순위를 가진 원소부터 먼저 처리된다.

 💡 방법 1. PriorityQueue 이용
from queue import PriorityQueue
q = PriorityQueue()
q.put(2)
q.put(1)
q.put(3)

x = q.get()
y = q.get()
z = q.get()
print(x, y, z)

# 1 2 3

queue 패키지에 있는 PriorityQueue() 함수를 가져오는거다.

  • 우선순위가 1, 2, 3 이므로 1, 2, 3이 반환된다.
💡 방법 2. heapq 이용
import heapq
hq = []
heapq.heappush(hq, 2)
heapq.heappush(hq, 1)
heapq.heappush(hq, 3)
x = heapq.heappop(hq)
y = heapq.heappop(hq)
z = heapq.heappop(hq)
print(x, y, z)
# 1 2 3

heapq.heappush()는 우선순위 큐에 원소를 추가 ( 두번째 인자가 우선순위 )

heapq.heappop()은 가장 큰 우선순위 원소 큐 pop

⇒ 가장 작은 원소가 우선순위가 가장 높다.

 

3. bisect

⇒ 이진 탐색을 쉽게 구현해주는 라이브러리이다.

코테에서 성능을 개선할때(시간 복잡도) 주로 사용된다. (로그시간을 찾을 때 사용되기 때문)

from bisect import bisect_left or bisect_right
x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 10]
p0 = bisect_right(x, 0) or bisect_left(x, 0)

# 위와같은 방식으로 사용된다.

 

✨느낀 점

  1. 순열과 조합은 코테에서 엄청 많이나온다 은근.. 잘 외워두자.
반응형