문제

코드
fun solution(A: IntArray, K: Int): IntArray {
val rotated = IntArray(A.size)
for (i in A.indices) {
rotated[(i + K) % (A.size)] = A[i]
}
return rotated
}
fun main() = with(System.`in`.bufferedReader()) {
val a = readLine().split(' ').map { it.toInt() }.toIntArray()
val k = readLine().toInt()
println(solution(a, k).contentToString())
}
문제를 IDE 환경에서도 풀 수 있도록 main 함수를 추가한 것
문제에선 solution 함수만 제출해도 됨
풀이
우선 문제는 주어진 배열 A를 K번 만큼 오른쪽으로 회전시키는 것이다.
[1, 2, 3]을 2번 회전하면 [3, 1, 2] -> [2, 3, 1] 의 과정을 거쳐 결과는 [2, 3, 1]이 된다.
바로 먼저 생각이 든 것은 문자열에다가 마지막 문자를 삭제하고, 해당 문자를 맨 앞으로 붙이는 방법이었다.
이렇게 하면 숫자가 한 자리 수가 아닌 경우엔 더 복잡해질 것 같아서 금방 포기했다.
자료구조를 사용해야 하나 싶었는데, 인덱스로도 해결이 될 것 같았다.
단순하게 나머지 연산을 이용해서 회전 후의 인덱스 위치를 계산해서 한 번에 위치를 찾아주면 될 것 같다 생각했다.
구현 자체도 어렵진 않았다.
IDE를 사용하지 않고 사이트 내에서만 코딩하는 연습도 해봤다.
테스트 케이스들을 통과하고 바로 제출했다.

입문자 용이라서 그런지 꽤나 쉬운 것 같다.
'Algorithm > 💼Codility' 카테고리의 다른 글
[Lesson 2] OddOccurrencesInArray (0) | 2024.07.28 |
---|---|
[Lesson 1] Binary Gap (0) | 2024.07.26 |
댓글