[Codility] CyclicRotation

Lesson 2 - Arrays : CyclicRotation

소스

kotlin

배열 인덱스 활용

1
2
3
4
5
6
7
8
9
10
fun solution(A: IntArray, K: Int): IntArray {
val rotatedArray = IntArray(A.size)

for (i in A.indices) {
val index = (i + K) % A.size
rotatedArray[index] = A[i]
}

return rotatedArray
}

Dequeue 활용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*

fun solution(A: IntArray, K: Int): IntArray {
val dequeue = ArrayDeque<Int>()
val rotation = when(A.size) {
0 -> 0
else -> K % A.size
}

dequeue.addAll(A.toList())
repeat(rotation) { dequeue.addFirst(dequeue.removeLast()) }

return dequeue.toIntArray()
}

IntArray A의 크기가 0인 경우 java.lang.ArithmeticException: / by zero이 발생하므로 A가 0인 경우 회전하지 않도록 값을 0으로 설정해줘야 한다.

댓글