Lv1. K번째수

Hello·2022년 7월 24일
0

코딩테스트 연습 > K번째수

1. 풀이 설명

commands를 for 문을 돌면서 각 command에 대해서
array의 command[0] 번째 ~ command[1]까지 slice 한 후 오름차순 정렬한다.
그 후, command[2] 번째 값을 결과 리스트에 추가하여 반환한다.

2. 나의 풀이

python

def solution(array, commands):   
    return [sorted(array[c[0]-1:c[1]])[c[2]-1] for c in commands]    

kotlin

fun solution(array: IntArray, commands: Array<IntArray>): IntArray {
    val answer = mutableListOf<Int>()
    for (c in commands) {
        answer.add(array.filterIndexed { idx, _ ->
            c[0] - 1 <= idx && idx < c[1]
        }.sorted()[c[2] - 1])
    }
    return answer.toIntArray()
}

3. 배운점

kotlin

  1. python 의 리스트 슬라이싱 같은 기능이 있다.
// asis
for (c in commands) {
    answer.add(array.filterIndexed { idx, _ ->
        c[0] - 1 <= idx && idx < c[1]
    }.sorted()[c[2] - 1])
}

// tobe
answer.add(array.slice(IntRange(c[0] - 1, c[1] - 1)).sorted()[c[2] - 1])
  1. IntRange(1,3) == 1..3
profile
안녕하세요 :)

0개의 댓글