문제: A와 K라는 변수가 주어지면 K 만큼 회전하여 A 내 요소들을 오른쪽으로 한칸 이동시킨다.
단, 더이상 오른쪽으로 이동할 수 없는경우(마지막 요소)에는 처음으로 이동하여 회전시킨다.
예를들어 A: {1, 2, 3, 4} 와 K: 3이 주어진다면 3번의 회전을 통해 요소가 3칸씩 이동해야한다.
첫번째 회전 : {4, 1, 2, 3}
두번째 회전 : {3, 4, 1, 2}
세번째 회전 : {2, 3, 4, 1}
설명 :
풀이언어 : Java
int[] A = {1, 2, 3, ....};
int K = 1,2,3,4,5.....;
// A객체 복사(깊은복사)
int[] result = A.clone();
// A객체의 길이
int size = A.length;
// K만큼 반복시작
for (int i=0; i<K; i++) {
// 리스트 탐색시작
for (int j=0; j<A.length; j++) {
// 현재 옮겨야하는 요소의 순번이 마지막이라면 첫번째로 아니면 현재의 다음순서로 이동
if (j+1 < size)
{
// 복사객체에 현재위치(j)보다 한칸 오른쪽으로 값 할당
result[j+1] = A[j];
}
else
{
// 마지막 요소이므로 복사객체의 첫번째칸으로 값 할당
result[0] = A[j];
}
}
// 작업이 끝난 후 다음 회전을 위해 A 업데이트
A = result.clone();
}