티스토리 뷰

코트카타

 

K번째수

 

문제

 

 

정답

class Solution {
    fun solution(array: IntArray, commands: Array<IntArray>): IntArray {
        val res = arrayListOf<Int>()
        for (command in commands) {
            val i = command[0] - 1
            val j = command[1] - 1
            val k = command[2] - 1
            res.add(array.slice(i..j).sorted()[k])
        }
        return res.toIntArray()
    }
}

arrayListOf와 for문을 통해 초기화한 배열요소들을 이용해서 풀었다.

 

배열의 번지수는 0부터 시작하므로 i, j, k 값에서 각각 1씩 빼줘야 한다.

 

val res = arrayListOf<Int>()

연산을 적용했을 때 나온 결과를 담을 배열을 arrayListOf<Int>로 선언해준다.

arrayListOf는 요소를 추가하거나 삭제할 수 있으며, 크기를 동적으로 조절이 가능하다.

 

for (command in commands)

for문에서 배열(commands)로 반복문을 돌리게 되면

command는 배열의 요소를 차례로 가리키게 된다.

 

res.add(array.slice(i..j).sorted()[k])

  'slice()' 함수는 지정한 범위내의 인덱스에 해당하는 요소만 들어있는 배열을 반환한다.

 

해당 구문은 array에서 i ~ j 번지의 요소들이 담긴 배열을 오름차순 정렬해

그 배열에서 k번지에 있는 값을 res배열에 추가하는 동작을 한다.

 

return res.toIntArray()

IntArray와 arrayListOf<Int>는 둘 다 배열에 해당하지만 서로 다른 자료형에 해당한다.

res를 solution 함수가 반환하는 자료형에 맞춰서 반환해주면 된다.

 

 

IntArray 활용

class Solution {
    fun solution(array: IntArray, commands: Array<IntArray>): IntArray {
        val res = IntArray(commands.size)
        for (n in 0 until commands.size) {
            val i = commands[n][0] - 1
            val j = commands[n][1] - 1
            val k = commands[n][2] - 1
            res[n] = array.slice(i..j).sorted()[k]
        }
        return res
    }
}

solution 함수가 반환하는 자료형인 IntArray를 활용해서 풀어봤다.

 

IntArray는 고정된 크기의 정수배열을 가지게 되고,

해당 배열의 요소를 변경하려면 n번지 값을 하나하나 직접 초기화해줘야 한다.

 

그렇기 떄문에 '0 ~ commands배열 크기 - 1' 만큼의 범위로 for문을 돌려준다.

 

 

Map 활용

class Solution {
    fun solution(array: IntArray, commands: Array<IntArray>): IntArray {
        return commands.map { command ->
            array.slice(command[0] - 1 until command[1]).sorted()[command[2] - 1]
        }.toIntArray()
    }
}

commands배열에서 map함수를 돌려서 문제를 해결할 수도 있다.

 

짧고 간결한 코드를 짜고 싶다면 배열을 다루는 문제에선

map 함수를 활용하는 것을 추천한다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함