Algo

[Codility] Lesson2. CyclicRotation

S.Zinlee 2018. 9. 29. 02:35

1. 문제

N개의 정수로 구성된 배열 A를 정수 K만큼 우측으로 회전한 배열 값을 구하라.

shift시 배열의 마지막 요소는 첫번째 위치로 이동한다.

예를 들어 배열 A가 {5, 1, 2, 3, 7, 1, 2} 이고, K의 값이 3일 경우 결과 값은 { 7, 1, 2, 5, 1, 2, 3}이다.



2. 풀이

배열 A의 length가 2보다 작을 경우엔 rotation의 의미가 없기 때문에 배열 A를 반환한다.

K의 값이 배열 A의 length보다 클 경우 K/A.length만큼 최초 배열A와 동일한 형태가 되기 때문에 K%A.length만큼만 rotation를 진행한다.

A와 같은 사이즈의 배열 rv을 생성하여 K%A.length위치부터 차례로 배열 A의 값을 대입하며 배열의 마지막 이후 첫번째 요소부터 차례로 대입한다.



3. 결과

해당 문제는 Performance 점수가 없으며 실행 결과 Correctness 100% 로 Task Score는 100 point가 되었다.



4. 코드 및 테스트 코드

CyclicRotation Code

CyclicRotation Test Code