문제 번호
알고리즘 분류
문제 풀이
이진수의 덧셈을 직접구현한다. 입력받은 두개의 수 중에서 더 긴쪽의 길이만큼 더 짧은쪽에 0을 채워서 넣는다.
let max = s1.length > s2.length ? s1.length : s2.length;
s1 = s1.padStart(max+1, '0');
s2 = s2.padStart(max+1, '0');
이후 보통 숫자를 계산하는 방법대로 계산하면된다.
function main() {
let answer = '';
let input = require('fs').readFileSync('input.txt').toString().trim().split('\n');
const T = +input[0];
for (let i = 1; i <= T; i++) {
let [s1, s2] = input[i].trim().split(' ');
let max = s1.length > s2.length ? s1.length : s2.length;
s1 = s1.padStart(max+1, '0');
s2 = s2.padStart(max+1, '0');
s1 = s1.split('').map(Number);
s2 = s2.split('').map(Number);
s1 = s1.reverse();
s2 = s2.reverse();
let ar = 0;
let ret = [];
for (let j = 0; j <= max; j++) {
if (s1[j] + s2[j] + ar >= 2) { // 각 자리의 합이 2를 넘어가면 carry 가 발생해서 다음자리로 넘어간다.
ret.push(s1[j] + s2[j] + ar - 2);
ar = 1;
} else {
ret.push(s1[j] + s2[j] + ar);
ar = 0;
}
}
for(let j=ret.length-1; j>=0; j--) { // 필요없는 0 제거.
if(ret[j] === 0) ret.pop();
else break;
}
if(ret.length === 0) ret = [0]; // 결과값이 0 일때.
answer += ret.reverse().join('') + '\n';
}
console.log(answer.trim())
}
main();
특이사항
'Algorithm > BaeKJoon' 카테고리의 다른 글
[JS][백준]16139_인간-컴퓨터 상호작용 (0) | 2022.04.08 |
---|---|
[JS][백준]15990_1, 2, 3 더하기 5 (0) | 2022.04.08 |
[JS][백준]22857_가장 긴 짝수 연속한 부분 수열 (small). (0) | 2022.04.06 |
[JS][백준]5549_행성 탐사 (0) | 2022.03.31 |
[JS][백준]2573_빙산 (0) | 2022.03.30 |