[문제]
* 배열의 회전이란 모든 원소를 오른쪽으로 한 칸씩 이동시키고, 마지막 원소는 배열의 맨 앞에 넣는 것을 말합니다.
* 두 배열 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);
}
}
접근방법
'Backend > Algorithm' 카테고리의 다른 글
25. ArrayList - 같은 숫자는 싫어 (0) | 2020.11.19 |
---|---|
24. 문자열 반복 - 수박수박수박수박수박수? (0) | 2020.11.19 |
22. Stack - 짝지어 제거하기 (0) | 2020.11.14 |
21. 2차원 배열 - 나머지 한 점 (0) | 2020.11.13 |
20. ArrayList - 나누어 떨어지는 숫자 배열 (0) | 2020.11.13 |