class Solution {
    public long[] solution(long[] numbers) {
        long[] answer = new long[numbers.length];
        
        for(int i=0; i<numbers.length; i++) {
            if(numbers[i]%2==0) { answer[i] = numbers[i]+1; }
            else {
                String[] arr = Long.toBinaryString(numbers[i]).split("");
                String s = "";
                int k = -1;
                
                for(int j=0; j<arr.length; j++) {
                    if(arr[j].equals("0")) { k = j; }
                }
                
                if(k==-1) {
                    s = "10";
                    for(int j=0; j<arr.length-1; j++) { s += "1"; }
                } else {
                    arr[k] = "1"; arr[k+1] = "0";
                    for(int j=0; j<arr.length; j++) { s += arr[j]; }
                }
                
                answer[i] = Long.valueOf(s, 2);
            }
        }
        
        return answer;
    }
}

'Problem Solving > Programmers' 카테고리의 다른 글

[Level 2] 영어 끝말잇기  (0) 2022.04.06
[Level 2] 삼각 달팽이  (0) 2022.04.06
[Level 2] 피로도  (0) 2022.04.06
[Level 2] 큰 수 만들기  (0) 2022.04.06
[Level 2] 카펫  (0) 2022.04.06