Notice
Recent Posts
Recent Comments
Link
«   2025/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
Tags
more
Archives
Today
Total
관리 메뉴

코딩응급실

프로그래머스: 2개 이하로 다른 비트 본문

Java

프로그래머스: 2개 이하로 다른 비트

Daeryuk Kim 2024. 3. 30. 22:25
public class Solution {
    public long[] solution(long[] numbers) {
        long[] answer = new long[numbers.length];

        for (int i = 0; i < numbers.length; i++) {
            answer[i] = findNext(numbers[i]);
        }

        return answer;
    }

    private long findNext(long number) {
        if (number % 2 == 0) {
            // 짝수인 경우, 가장 오른쪽 비트가 0이므로 1로 바꾸면 됩니다.
            return number + 1;
        } else {
            // 홀수인 경우, 0인 비트를 찾아 그 위치를 1로 바꾸고, 바로 오른쪽 비트를 0으로 만듭니다.
            // '0'이 나타나는 위치를 찾아 그 위치의 비트를 1로, 바로 오른쪽 비트를 0으로 설정합니다.
            long rightMostZero = ~number & (number + 1);
            long nextNumber = number | rightMostZero;
            nextNumber &= ~(rightMostZero >> 1);
            return nextNumber;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        long[] numbers = {2, 7};
        long[] result = solution.solution(numbers);

        for (long res : result) {
            System.out.println(res);
        }
    }
}

'Java' 카테고리의 다른 글

프로그래머스: 소수 찾기  (0) 2024.03.30
프로그래머스: 가장 큰 수  (1) 2024.03.30
프로그래머스: 2 x n 타일링  (1) 2024.03.30
프로그래머스: [1차] 프렌즈4블록  (0) 2024.03.26
프로그래머스: 숫자 변환  (0) 2024.03.26