양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.
예를 들어,
정수들이 담긴 배열 numbers가 매개변수로 주어집니다. numbers의 모든 수들에 대하여 각 수의 f 값을 배열에 차례대로 담아 return 하도록 solution 함수를 완성해주세요.
class Solution {
public long[] solution(long[] numbers) {
long[] answer = new long[numbers.length];
for(int i=0; i<numbers.length; i++) {
// 1
if(numbers[i] % 4 != 3) answer[i] = numbers[i] + 1;
else { // 2
String binary = Long.toBinaryString(numbers[i]);
int idx = binary.lastIndexOf("0");
// 2-1
if(idx != -1) {
String tmp = binary.substring(0,idx) + "10" + binary.substring(idx+2, binary.length());
answer[i] = Long.parseLong(tmp,2);
} else { // 2-2. 모두 1로만 이루어질때
String tmp = "10" + binary.substring(1,binary.length());
answer[i] = Long.parseLong(tmp,2);
}
}
}
return answer;
}
}
이런 규칙을 어떻게 바로 찾아내는 걸까...