[프로그래머스/181881] 조건에 맞게 수열 변환하기(2)

☑️ 문제

프로그래머스 181881

☑️ 풀이

  • 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
    }
}

© 2021. All rights reserved.

yaejinkong의 블로그