입출력 예
arr | result |
[1, 2, 3, 100, 99, 98] | 5 |
입출력 예 설명
입출력 예 #1
- 위 작업을 반복하면 다음과 같이
arr
가 변합니다.
반복 횟수 | arr |
0 | [1, 2, 3, 100, 99, 98] |
1 | [3, 2, 7, 50, 99, 49] |
2 | [7, 2, 15, 25, 99, 99] |
3 | [15, 2, 31, 51, 99, 99] |
4 | [31, 2, 63, 51, 99, 99] |
5 | [63, 2, 63, 51, 99, 99] |
6 | [63, 2, 63, 51, 99, 99] |
- 이후로
arr
가 변하지 않으며,arr(5) = arr(6)
이므로 5를 return 합니다.
코드
import java.util.*;
class Solution {
public int solution(int[] arr) {
int count = 0;
while(true) {
int[] prev = Arrays.copyOf(arr, arr.length);
for(int i = 0; i < arr.length; i++) {
int num = arr[i];
if(num >= 50 && num % 2 == 0) {
arr[i] = num / 2;
} else if(num < 50 && num % 2 == 1) {
arr[i] = num * 2 + 1;
}
}
if(Arrays.equals(prev, arr)) return count;
count++;
}
}
}
- 홀수 일 때 +1 을 하지 않으면 무한 반복됨
- 어떤 값이 계속 2배↔절반

Share article