반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/77885
2. 코드
풀이의 핵심은 아래의 글을 참고하였다.
https://school.programmers.co.kr/questions/37104
function solution(numbers) {
let answer = [];
for(let i=0;i<numbers.length;i++){
// 짝수라면 +1 한 값이 최소값
if(numbers[i] % 2 === 0) answer.push(numbers[i]+1);
// 홀수라면 첫번째 0을 1로 바꾸고 그 오른쪽 값을 0으로 바꾼 값이 최소값
else{
let temp = numbers[i].toString(2).split("");
let zero = false;
for(let j=temp.length-1;j>=0;j--){
if(temp[j] === '0'){
temp[j] = 1;
temp[j+1] = 0;
zero = true;
// 10진수 -> 2진수로
answer.push(Number(parseInt(temp.join(""),2)));
break;
}
}
// 만약 numbers[i]에 0이 없다면 앞에 1 붙혀주고 첫번째 값 0으로 바꾼 temp 더해주기
if(!zero){
temp[0] = '0';
let temp2 = ['1',...temp].join("");
answer.push(Number(parseInt(temp2,2)));
}
}
}
return answer;
}
반응형
'프로그래머스 > 구현' 카테고리의 다른 글
[구현] 프로그래머스 '기지국 설치' - js (0) | 2023.04.28 |
---|---|
[구현] 프로그래머스 '숫자 게임' - js (0) | 2023.04.25 |
[구현] 프로그래머스 '뒤에 있는 큰 수 찾기' - js (1) | 2023.04.20 |
[구현] 프로그래머스 '프렌즈4블록' - js (0) | 2023.04.19 |
[구현] 프로그래머스 '파일명 정렬' - js (0) | 2023.04.18 |