LV1. 정렬 - K번째수
이 문제는 설명할 게 그리 많지 않다.
- array를 i~j까지 slicing
- slicing한 배열을 sort
- k번째 원소를 return
하면 된다. Array 배열의 길이가 100 이하이므로 for문을 통해 돌면 된다.
하지만 길이가 수억이 될 때를 대비해 이진탐색을 통해 구현했다.
코드를 첨부하고 포스팅을 마치도록 하겠다.
def bsearch(left, right, kth):
while left <= right :
mid = (left + right) // 2
if mid == kth :
return newArr[mid]
elif mid < kth :
left = mid + 1
else :
right = mid - 1
return -1
def solution(array, commands):
answer = []
for i in range(len(commands)):
start, end, kth = commands[i]
newArr = array[start-1:end]
newArr.sort()
left = 0
right = end - start
answer.append(newArr[kth-1])
return answer