[JAVA 문제 풀이] 351. 2개 이하로 다른 비트

프로그래머스 (77885)
Stupefyee's avatar
Jun 30, 2025
[JAVA 문제 풀이] 351. 2개 이하로 다른 비트
notion image
 

내가 작성한 코드

class Solution { public long[] solution(long[] numbers) { long[] answer = new long[numbers.length]; // 짝수: n+1이 항상 비트 1개만 다름 // 홀수: n의 0이 처음 나오는 위치를 1로, 그 오른쪽 1을 0으로 바꿔주면 비트 2개만 다름 for (int i = 0; i < numbers.length; i++) { long n = numbers[i]; // ~n: n의 비트를 반전 // lowestOneBit(): 비트의 가장 오른쪽 1만 남기고 0으로 만들기 // >> 1: 비트를 오른쪽으로 한칸 이동 answer[i] = n % 2 == 0 ? n + 1 : n + (Long.lowestOneBit(~n) >> 1); } return answer; } }
Share article

stupefyee