FrontEnd/프로그래머스

[JS] 두개 이하로 다른 비트

728x90

문제에서 주어진 값을 생각할때 규칙을 찾아볼 수 있었다.

 

 

1. 만약 수가 짝수라면 무조건 자기숫자 +1이 답이다. (2의 배수는 2진법으로 나타냈을 때 끝이 무조건 0이기 때문)

2. 홀수인경우

 

 

홀수인 경우 고민을 많이 했다. 단순히 맨 마지막에 나오는 0을 1로 바꾸면 안되었기 때문

 

따라서 앞에 0을 붙여준 후, 마지막에 나오는 0을 1로바꾸고, 그 다음에 나오는 비트를 0으로 고정시켜주면 1개 혹은 2개로 답이 나오게 된다.

 

 

 

 

function solution(numbers) {
    return numbers.map(el => {
        if (!(el%2)) return el +1
        const bin = '0'+el.toString(2)
        const idx = bin.lastIndexOf('0')
        return parseInt(bin.substring(0,idx) + '10' + bin.substring(idx+2),2)
    })
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 괄호 회전하기  (0) 2023.06.14
[JS] 행렬 테두리 회전하기  (0) 2023.06.14
[JS] 거리두기 확인하기  (0) 2023.06.13
[JS] 모음 사전  (0) 2023.06.13
[JS] 빛의 경로 사이클  (0) 2023.06.10