본문 바로가기

Backend/Algorithm

23. Array - 배열의 회전

[문제]

* 배열의 회전이란 모든 원소를 오른쪽으로 한 칸씩 이동시키고, 마지막 원소는 배열의 맨 앞에 넣는 것을 말합니다.

* 두 배열 arrA와 arrB가 매개변수로 주어질 때, arrA를 회전해 arrB로 만들 수 있으면 true를, 그렇지 않으면 false를 return 하는 solution 함수를 작성해주세요.

 

[제한 조건]

arrA는 길이가 1 이상 1,500 이하인 배열입니다.

arrA의 원소는 0 이상 1,500 이하인 정수입니다.

arrB는 길이가 1 이상 1,500 이하인 배열입니다

arrB의 원소는 0 이상 1,500 이하인 정수입니다.

 

 

 

 

코드

 

 

 

public class Solution {
	public boolean solution(int[] arrA, int[] arrB) {	
		boolean answer = false;
		
		// 길이가 같지 않으면 바로 false
		if(arrA.length != arrB.length) {
			answer=false;	
		}else {
			for(int i =0; i<arrA.length; i++) {
	           //배열 순회하기 
	           int first = arrA[0]; //{4,1,2,3} -> {1,2,3,4} -> {2,3,4,1}
	            //한바퀴 돌때까지 순회
	           for(int j=0; j<arrA.length-1; j++) {
	                arrA[j] = arrA[j+1]; //{1,2,3,3} -> {2,3,4,4} -> {3,4,1,1} 
	            } 
	            arrA[arrA.length-1] = first; //{1,2,3,4} ->{2,3,4,1} -> {3,4,1,2}
	            //arrA랑 arrB랑 같아지면 break
	            if(Arrays.equals(arrA, arrB)) {
	                answer = true;
	                break;
	            }
			}
		}	
		System.out.println(answer);
 
    }
}

 

 

 

 

접근방법