✔ 풀이
class MyCircularDeque(object):
    def __init__(self, k):
        self.maxlen, self.len = k, 0
        self.head = ListNode(None)
        self.tail = ListNode(None)
        self.head.right, self.tail.left = self.tail, self.head
        
    def _add(self, node, new):  
        n = node.right  
        node.right = new
        n.left = new
        new.left, new.right = node, n
    
    def _del(self, node): 
        n = node.right.right  
        node.right = n
        n.left = node
        
    def insertFront(self, value):
        if self.len == self.maxlen:
            return False
        self.len += 1
        self._add(self.head, ListNode(value))
        return True
        
    def insertLast(self, value):
        if self.len == self.maxlen:
            return False
        self.len += 1
        self._add(self.tail.left, ListNode(value))
        return True
        
    def deleteFront(self):
        if self.len == 0:
            return False
        self.len -= 1
        self._del(self.head)
        return True
        
    def deleteLast(self):
        if self.len == 0:
            return False
        self.len -= 1
        self._del(self.tail.left.left)
        return True
        
    def getFront(self):
        return -1 if self.len == 0 else self.head.right.val
        
    def getRear(self):
        return -1 if self.len == 0 else self.tail.left.val
        
    def isEmpty(self):
        return self.len == 0
        
    def isFull(self):
        return self.len == self.maxlen
✔ 풀이
import heapq
class Solution(object):
    def mergeKLists(self, lists):
        root = result = ListNode(None)
        
        
        
        Q = []
        for i, list in enumerate(lists):
            if list:
                heapq.heappush(Q, (list.val, i, list))
        
        while Q:
            node = heapq.heappop(Q)
            idx = node[1]
            result.next = node[2]
            
            result = result.next 
            if result.next:
                heapq.heappush(Q, (result.next.val, idx, result.next))
        
        return root.next