heapq
: 최소 힙
import heapq
>>> heap = []
>>> heapq.heappush(heap, 4)
>>> heapq.heappush(heap, 2)
>>> heapq.heappush(heap, 5)
>>> heapq.heappush(heap, 1)
>>> heap
[1, 2, 5, 4]
>>> heapq.heappop(heap)
1
>>> heapq.heappop(heap)
2
>>> heapq.heappop(heap)
4
>>> heapq.heappop(heap)
5
>>> heap = [4, 1, 7, 3, 8, 5]
>>> heapq.heapify(heap)
>>> heap
[1, 3, 5, 4, 8, 7]
>>> nums = [4, 1, 7, 3, 8, 5]
>>> heap = []
>>>
>>> for num in nums:
... heapq.heappush(heap, (-num, num)) # (우선 순위, 값)
...
>>> while heap:
... print(heapq.heappop(heap)[1]) # index 1
def kth_smallest(nums, k):
heap = []
for num in nums:
heapq.heappush(heap, num)
kth_min = None
for _ in range(k):
kth_min = heapq.heappop(heap)
return kth_min
print(kth_smallest([4, 1, 7, 3, 8, 5], 3))
4
zip
: 병렬처리
>>> for number, upper, lower in zip("12345", "ABCDE", "abcde"):
... print(number, upper, lower)
...
1 A a
2 B b
3 C c
4 D d
5 E e
import sys
board = []
for _ in range(3):
board.append(list(map(int, sys.stdin.readline().strip().split())))
print(board)
board = list(zip(*board)) #병렬처리
print(board)
board = list(zip(*board)) #원상태로
print(board)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> keys = [1, 2, 3]
>>> values = ["A", "B", "C"]
>>> dict(zip(keys, values))
# 길이 다를 때 가장 짧은 요소 이 후는 버림
{1: 'A', 2: 'B', 3: 'C'}