function add(a, b) {
let newA = ("0" + a).split('').map(n => Number(n));
let newB = ("0" + b).split('').map(n => Number(n));
const answerList = [];
answerList.length = Math.max(newA.length, newB.length)
answerList[0] = 0;
const dec = newA.length - newB.length
if (dec > 0) {
for (let i = 0; i < Math.abs(dec); i++) {
newB.unshift(0);
}
} else if (dec < 0) {
for (let i = 0; i < Math.abs(dec); i++) {
newA.unshift(0);
}
};
for (let i = 1; i < answerList.length; i++) {
let partialSum = newA[i] + newB[i];
if (partialSum >= 10) {
let k = i;
answerList[i - 1] += 1;
while (k != 0) {
if (answerList[k - 1] >= 10) {
answerList[k - 2] += 1;
answerList[k - 1] = answerList[k - 1] - 10;
} else {
break
}
k--
}
answerList[i] = partialSum - 10;
} else {
answerList[i] = partialSum;
}
}
if (answerList[0] === 0) {
answerList.shift();
}
return answerList.map(n => String(n)).join('');
}
주먹구구식으로 풀었다.. 덧셈의 원리를 이용하여 각 자리수마다 계산하고, 각자리수의 합이 10이 넘어가면 그 앞 자리수에 1을 더해주었다.
function add (a, b) {
var res = '', c = 0
a = a.split('')
b = b.split('')
while (a.length || b.length || c) {
c += ~~a.pop() + ~~b.pop()
res = c % 10 + res
c = c > 9
}
return res
}
너무짧아서 당황했다. 천재들은 다르다..
unshift()
메서드는 배열의 맨 앞에 요소를 추가하고, 새로운 길이를 반환한다.
안녕하세요
이번문제를 풀면서 답을 적었는데 좀많이 다르게 되어있어서 제가 문제를 잘못이해 했는지 몰라서 물어보려고 댓글을 답니다.
일단 이 문제에 답을 전
function DO(n,m) {
m = parseInt(m)
n = parseInt(n)
return (m+n).toString()
}
근데 해답이 엄청 어렵고 해서 혹시 제가 문제에서 놓친게 있나요"?