문제
풀이
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
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv.0 / 길이에 따른 연산 / Java (0) | 2024.01.16 |
---|---|
[Programmers] Lv.0 / 1로 만들기 / Java (0) | 2024.01.16 |
[Programmers] Lv.0 / 조건에 맞게 수열 변환하기 1 / Java (1) | 2024.01.12 |
[Programmers] Lv.0 / 수열과 구간 쿼리 1 / Java (0) | 2024.01.11 |
[Programmers] Lv.0 / n보다 커질 때까지 더하기 / Java (0) | 2024.01.10 |
댓글