Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 2개 이하로 다른 비트 - 77885 본문

프로그래머스

[level 2] 2개 이하로 다른 비트 - 77885

csct3434 2024. 2. 29. 03:28

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {

    public long[] solution(long[] numbers) {
        long[] answer = new long[numbers.length];
        int index = 0;

        for (long number : numbers) {
            if (number % 2 == 0) {
                answer[index++] = number + 1;
                continue;
            }

            String binaryString = Long.toBinaryString(number);
            int idx = binaryString.lastIndexOf('0');

            String smallestBigNumber;
            if (idx == -1) {
                smallestBigNumber = "10" + binaryString.substring(1);
            } else {
                smallestBigNumber = binaryString.substring(0, idx) + "10" + binaryString.substring(idx + 2);
            }

            answer[index++] = Long.parseLong(smallestBigNumber, 2);
        }

        return answer;
    }
}