csct3434
[level 2] 2개 이하로 다른 비트 - 77885 본문
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;
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] 전력망을 둘로 나누기 - 86971 (1) | 2024.02.29 |
---|---|
[level 2] 모음 사전 - 84512 (1) | 2024.02.29 |
[level 2] 행렬 테두리 회전하기 - 77485 (0) | 2024.02.29 |
[level 2] 괄호 회전하기 - 76502 (0) | 2024.02.29 |
[level 2] 메뉴 리뉴얼 - 72411 (0) | 2024.02.29 |