본문 바로가기
Algorithm/Programmers

[Programmers] Lv.0 / 조건에 맞게 수열 변환하기 2 / Java

by unknownomad 2024. 1. 15.

문제

 

풀이

class Solution {
    public int solution(int[] arr) {
        
        int answer = -1;
        int loopCnt = 0;
        
        while(answer == -1) {
            int changeCnt = 0;
            for(int i = 0; i < arr.length; i++) {
                if(arr[i] >= 50 && arr[i] % 2 == 0) {
                    arr[i] /= 2;
                    changeCnt++;
                } else if(arr[i] < 50 && arr[i] % 2 != 0) {
                    arr[i] = (arr[i] * 2) + 1;
                    changeCnt++;
                }
            }
            loopCnt++;
            if(changeCnt == 0) {
                answer = loopCnt;
            }
        }
        return answer - 1;
    }
}
import java.util.Arrays;

class Solution {

    public int solution(int[] arr) {
        return Arrays.stream(arr)
            .map(i -> cntAction(i))
            .max()
            .getAsInt();
    }

    private int cntAction(int n) {

        int cnt = 0;
        boolean flag = true;

        while (flag) {
            if (n % 2 == 0 && 50 <= n) {
                n /= 2;
                cnt++;
            } else if (n % 2 == 1 && n < 50) {
                n *= 2;
                n += 1;
                cnt++;
            } else {
                flag = false;
            }
        }
        return cnt;
    }
}

 

출처

https://school.programmers.co.kr/learn/courses/30/lessons/181881

 

 

댓글