[프로그래머스/파이썬] K번째수(42748) 풀이

업데이트:



문제 정보


풀이

문제

배열 array와 여러 개의 commands가 주어집니다. 각 명령 [i, j, k]에 대해:

  • arrayi번째부터 j번째까지 자르고
  • 정렬한 뒤
  • k번째 수를 결과에 담으면 됩니다.

코드

def solution(array, commands):
    answer = []

    for command in commands:
        answer.append(sorted(array[command[0]-1:command[1]])[command[2]-1])
    
    return answer


print(solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]]))

설명

각 명령을 독립적으로 처리하면 되는 구현 문제입니다.

  • 슬라이싱으로 구간을 자릅니다.
  • sorted()로 정렬합니다.
  • k-1 인덱스를 뽑아 결과 리스트에 추가합니다.

명령 수를 C, 각 구간 길이를 L이라 하면 대략 O(C * L log L)로 동작합니다.



댓글남기기