[프로그래머스] 이진수 더하기
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 이진수 더하기 · js 이진수 더하기
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 이진수 더하기 · js 이진수 더하기
문제 설명
이진수를 의미하는 두 개의 문자열 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합니다.
나의 풀이
function solution(bin1, bin2) {
var answer = (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2);
return answer;
}
나의 두번째 풀이(Code Refactoring)
function solution(bin1, bin2) {
return (BigInt("0b" + bin1) + BigInt("0b" + bin2)).toString(2);
}
// 1. BigInt로 , bin1 , bin2에 해당하는 이진수를 '0b'로 십진수로 만들고 다시 이진수 처리
// 2. BigInt메서드는 대개 2^53보다 큰 값에 해당하는 경우에만 사용
참고 할 만한 다른 사람의 코드
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();
}