[프로그래머스/181881] 조건에 맞게 수열 변환하기(2)
in Study / Coding Test
☑️ 문제
☑️ 풀이
Arrays.equals
를 사용해서 배열의 원소들이 일치하는 지 확인했다.
//시간: 75.72ms
//메모리: 165MB
import java.util.*;
class Solution {
public int solution(int[] arr) {
int answer = 0;
int[] comparedArr = new int[arr.length];
boolean flag = true;
while (flag) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 50 && arr[i] % 2 == 0) {
comparedArr[i] = arr[i] / 2;
} else if (arr[i] < 50 && arr[i] % 2 != 0) {
comparedArr[i] = arr[i] * 2 + 1;
} else {
comparedArr[i] = arr[i];
}
}
if (Arrays.equals(arr, comparedArr)) {
flag = false;
} else {
arr = Arrays.copyOf(comparedArr, comparedArr.length);
answer++;
}
}
return answer;
}
}
☑️ 문법 정리 - 두 배열을 비교하는 방법
Arrays.equals()
- 두 배열의 길이가 같고, 각 요소가 동일한 순서로 일치하는 지 비교한다.
Arrays.equals(array1, array2);
- 모두 같으면
true
, 그렇지 않으면false
를 반환한다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {4, 5, 6};
System.out.println(Arrays.equals(arr1, arr2)); // true
System.out.println(Arrays.equals(arr1, arr3)); // false
}
}