반응형
codility 세번째 문제 입니다. 문제의 자세한 내용은 여기서 확인하시면 됩니다.
요약하자면 array의 값을 K번 만큼 오른쪽으로 이동시키는 문제입니다. 아주 간단한 문제입니다.
fun solution(A: IntArray, K: Int): IntArray {
// write your code in Kotlin
var ans = IntArray(A.size)
if(A.size == 0){
return IntArray(0)
}else if(A.size == K){
return A
}else{
var moveCount = K%A.size
for(i in A.indices){
if((i+moveCount) < A.size){
ans.set(i+moveCount, A[i])
}else{
ans.set(i+moveCount-A.size,A[i])
}
}
return ans
}
}
우선 A가 빈 array일 경우 빈 Array를 새로 만들어 반환하고 A의 크기와 K의 크기가 같을 경우 오른쪽으로 이동시키면 다시 원위치로 오기 때문에 A를 그대로 반환해두 됩니다.
그다음은 K를 A의 크기로 나눈 나머지 값만 큼만 이동시키면 되기 때문에 그 만큼 이동 시켜 Array를 만들어서 반환하면 결과 값을 얻을 수 있습니다. 이동 시킬 떄 이동한 값이 A의 크기보다 클 수 없기 때문에 클 경우 A의 크기만큼 빼고 그 만큼 다시 이동 하게 됩니다.
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Codility - Lesson 3 TapeEquilibrium (0) | 2019.11.11 |
---|---|
Codility - Lesson3 PermMissingElem (0) | 2019.11.08 |
Codility - Lesson 3 FrogJmp (0) | 2019.11.07 |
Codility - Lesson 2 OddOccurrencesInArray (0) | 2019.11.06 |
Codility - Lesson 1 Iterations BinaryGap (0) | 2019.11.06 |