본문 바로가기

공부하자/Codility

[Codility] Lesson2. CyclicRotation (C#)

문제: app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/

 

CyclicRotation coding task - Learn to Code - Codility

Rotate an array to the right by a given number of steps.

app.codility.com

 

1. -1000 ~ 1000 사이의 정수가 N개 있는 배열 A

2. 배열 A를 K번 회전시켰을 때 결과 리턴

3. N, K 는 0 ~ 100 사이의 정수

 

 

처음에는 입력한 값의 유효성 검사를 해줘야 되는 줄 알고 단계마다 확인하는 코드를 넣어줬는데...

코딜리티를 풀다보니 빼도 되는 걸 발견! (다른 사람들꺼 보면서 예습했으면 진작 알았을껄...)

 

배열을 회전시키기 위해 모듈러 연산을 이용했다.

(5개의 정수를 5번 회전시키면 제자리에 오는걸 생각해보면, 5의 배수-몫- 은 회전 결과에 의미가 없다.)

 

 

코드구현 (C#)

            int[] result = new int[A.Length];
            for (int i = 0; i < A.Length; i++)
            {
                result[(i + K) % A.Length] = A[i];
            }

            return result;