코린이의 소소한 공부노트

[프로그래머스/Lv.0] 조건에 맞게 수열 변환하기 2 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 조건에 맞게 수열 변환하기 2

무지맘 2023. 5. 1. 22:55

1. Input, Output, Example

arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더한다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)x가 항상 존재한다.

- 이러한 x 중 가장 작은 값을 반환

 

2. Constraint

1) 1 arr의 길이 1,000,000

2) 1 arr의 원소의 값 100

 

3. Code

1) 첫 코드(2023/05/01)

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        boolean find = false;
        while(!find){
            answer++;
            int[] copied = new int[arr.length];
            System.arraycopy(arr, 0, copied, 0, arr.length);
            for(int i=0 ; i<arr.length ; i++){
                if(arr[i]>=50 && arr[i]%2==0)
                    arr[i] /= 2;
                else if(arr[i]<50 && arr[i]%2==1)
                    arr[i] = arr[i]*2 +1;
            }
            boolean check = true;
            for(int i=0 ; i<arr.length ; i++)
                check = check && (arr[i]==copied[i]);
            if(check) find = true;
        }
        return answer-1;
    }
}