😈 이진수 더하기
📗 문제 설명
이진수를 의미하는 두 개의 문자열 bin1
과 bin2
가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
👀 제한사항
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤
bin1
,bin2
의 길이 ≤ 10 bin1
과bin2
는 0과 1로만 이루어져 있습니다.bin1
과bin2
는 "0"을 제외하고 0으로 시작하지 않습니다.
📃 입출력 예
bin1 | bin2 | result |
---|---|---|
"10" | "11" | "101" |
"1001" | "1111" | "11000" |
💬입출력 예 설명
입출력 예 설명 #1
- 10 + 11 = 101 이므로 "101" 을 return합니다.
입출력 예 설명 #2
- 1001 + 1111 = 11000 이므로 "11000"을 return합니다.
💎나의 풀이
const solution = (bin1, bin2) => (parseInt(bin1,2)+parseInt(bin2,2)).toString(2)
2진수 => 10진수 연산 => 2진수 간단한 풀이다.
다른분의 풀이를 올리고 싶었다.
function solution(bin1, bin2) {
let temp = Number(bin1) + Number(bin2);
temp = [...temp.toString()].reverse().map((v) => +v);
for (let i = temp.length; i < 11; i++) {
temp.push(0);
}
for (let i = 0; i < temp.length; i++) {
if (temp[i] === 2) {
temp[i] = 0;
temp[i + 1]++;
} else if (temp[i] === 3) {
temp[i] = 1;
temp[i + 1]++;
}
}
return Number(temp.reverse().join("")).toString();
}
보면서 궁금했던점은 reverse였다.
temp를 reverse하고 마지막에 다시 reverse 하는 이유가 궁금했다.
2진수의 올림은 왼쪽으로 올라가는데 js의 for문은 오른쪽으로 진행되기 때문에 reverse로 진행후에 연산 결과를 다시 reverse한다고 댓글에서 친절히 알려 주셨다. (감사합니다.)
보기만 해도 경이롭다.
대다나다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 😈] JavaScript 수 조작하기 2 (0) | 2023.10.18 |
---|---|
[프로그래머스 😈] JavaScript 9로 나눈 나머지 (1) | 2023.10.18 |
[프로그래머스 😈] JavaScript 한 번만 등장한 문자 (0) | 2023.10.18 |
[프로그래머스 😈] JavaScript 숨어있는 숫자의 덧셈 (2) (0) | 2023.10.17 |
[프로그래머스 😈] JavaScript k의 개수 (0) | 2023.10.17 |