Skip to content

Instantly share code, notes, and snippets.

@QuadFlask
Created April 27, 2016 04:58
Show Gist options
  • Save QuadFlask/62c5330b6c391c7099fff5b73841f593 to your computer and use it in GitHub Desktop.
Save QuadFlask/62c5330b6c391c7099fff5b73841f593 to your computer and use it in GitHub Desktop.
[CodeWars] string number sum

문자열로된 숫자의 합을 구하기

문자열의 길이는 꽤 길 수도 있기 때문에 단순 덧셈 연산만으로 안되고....잘라다가 자리마다 덧셈하고 캐리를 계산하고 해야함

My Solutiion

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;
}

Best Practice

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으로 시작하는 부분을 제거

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment