코딩테스트 연습 - Cycle Rotation

shinhyocheol·2021년 7월 15일
0
  • 문제: 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}

  • 설명 :

    • A : 숫자형 배열
    • K : 회전 수
  • 풀이언어 : 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();	
}
profile
놀고싶다

0개의 댓글