반응형
문제
2개 이하로 다른 비트
https://school.programmers.co.kr/learn/courses/30/lessons/77885
풀이
설명
양의 정수들로 이루어진 배열이 있을 때, 각 숫자마다 자신보다 크고 자신과 비트가 2개 이하로 다른 수들 중 제일 작은 수를 배열에 담아 구하는 문제입니다.
조건을 만족하는 수는 다음과 같이 구할 수 있습니다.
- 짝수의 경우, 이진수가 항상 0으로 끝나므로, 1을 더하면 됩니다.
- 홀수의 경우, 가장 마지막에 위치한 '01'을 '10'으로 바꾸면 됩니다. 1로만 이루어질 수 있으므로, 이진 문자열 앞에 0을 붙인 후 수행합니다.
예시 코드
function solution(numbers) {
return numbers.map((x) => {
if (x % 2 === 0) return x + 1;
else {
const bin = "0" + x.toString(2);
const idx = bin.lastIndexOf("0");
return parseInt(bin.slice(0, idx) + "10" + bin.slice(idx + 2), 2);
}
});
}
'Coding Problem' 카테고리의 다른 글
[프로그래머스] 마법의 엘리베이터 (0) | 2025.01.02 |
---|---|
[프로그래머스] 가장 긴 팰린드롬 (1) | 2025.01.01 |
[프로그래머스] N-Queen (0) | 2024.12.30 |
[프로그래머스] 과제 진행하기 (0) | 2024.12.29 |
[프로그래머스] 110 옮기기 (0) | 2024.12.27 |