문자열로된 숫자의 합을 구하기
문자열의 길이는 꽤 길 수도 있기 때문에 단순 덧셈 연산만으로 안되고....잘라다가 자리마다 덧셈하고 캐리를 계산하고 해야함
function sumStrings(a,b) {
var removeZero = s=> s.substr([1,2,3,4,5,6,7,8,9]
.map(n=>s.indexOf(n))
.filter(n=>n!=-1)
.reduce((a,b)=>Math.min(a,b), s.length));
a = removeZero(a).split('').reverse();
b = removeZero(b).split('').reverse();
if (b.length > a.length) {
var t = b;
b = a; a = t;
}
var carry = 0;
var r = a.map((n,i)=> {
var v = ~~n + ~~b[i] + carry;
carry = v>9? 1:0;
return ''+(v%10);
}).reduce((a,b)=> b+a);
return (carry==1?'1':'') + r;
}
function sumStrings(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.replace(/^0+/, '');
}
아.. 겁나 쉽게 하네.....
문자열을 배열로 만든뒤, 뒤에서 하나씩 pop
해가면서 덧셈을 하고 마지막 결과에서 0으로 시작하는 부분을 제거