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 |