문제
내가 작성한 정답
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int answer = 0;
while(true){
int[] pre = arr.clone();
// int[] pre = Arrays.copyOf(arr,arr.length);
for(int i=0; i<arr.length; i++){
if(arr[i]>=50 && arr[i]%2==0) arr[i] = arr[i]/2;
else if (arr[i]<50 && arr[i]%2==1) arr[i] = arr[i]*2 + 1;
}
if(Arrays.equals(pre,arr)) break;
answer++;
}
return answer;
}
}
다른 사람들의 정답
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;
}
}
Share article