heapq를 이용하면 sort()를 이용해 모든 수를 다 정렬하는것 보다 빠르기 때문에 사용한다.
import heapq def solution(array, commands): answer = [] for c in commands: i, j, k = c # 자르기 temp = array[(i-1):j] # 정렬 temp2 = [] for t in temp: heapq.heappush(temp2, t) #k번째 숫자 구하기 for n in range(k): a = heapq.heappop(temp2) . answer.append(a)
나는 처음에 i, j, k를 받아올 때
for c in commands: i, j, k = c[0], c[1], c[2]
이렇게 받아왔었다.
그러나
for c in commands: i, j, k = c
이렇게 표기 할 수 있음을 알게 되었다.
그렇다면 c의 갯수와 변수의 갯수가 달라도 저렇게 될까?
list = [[2, 5, 3], [4, 4, 1], [1, 7, 3]] for c in list: n, m = i print(n, m)
결과는
ValueError: too many values to unpack (expected 2)
이 나온다
즉, 변수의 갯수와 c의 요소 갯수가 같아야 한다.
def solution(array, commands): return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
map과 lambda를 이용하여 한줄로 작성하였다.
그러나 이는 모든수를 다 정렬하므로 시간이 오래 걸리는 단점이 있다.