알고리즘

[LeetCode] 415 Add Strings JavaScript

sandwe 2022. 7. 22. 21:32

문제 링크

 

Add Strings - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제 유형

문자열 (String)

 

문제 풀이

이 문제는 숫자 2개가 string 타입으로 주어지고, 숫자 2개를 더한 연산 결과를 string 타입으로 반환하는 문제이다.

 

초등학교 때 두 수의 덧셈할 때 일의 자리부터 더하면서 받아올림을 위의 자리로 올려주는 방법을 배웠다. 이 방법을 이용하면 된다.

받아올림(carry)은 각 자리의 합을 10으로 나눈 것이다. 해당 자리에 들어갈 값은 각 자리의 합을 10으로 나눈 나머지이다. 만약, 반복문을 돌면서 현재 인덱스의 위치에 값이 없어 undefined가 나온다면 0으로 대체한다. 반복문을 탈출하고 마지막으로, 남아있는 받아올림을 추가한다.

 

코드

var addStrings = function(num1, num2) {
    const len1 = num1.length - 1, len2 = num2.length - 1;
    const max = Math.max(num1.length, num2.length);
    let carry = 0, answer = "";
    
    for (let i = 0; i < max; i++) {
        const sum = carry + parseInt(num1[len1 - i] || 0) + parseInt(num2[len2 - i] || 0);
        carry = Math.floor(sum / 10);
        answer = sum % 10 + answer;
    }
    if (carry > 0) answer = carry + answer; // "1" + "9" = "10"
    return answer;
};

 

참고

https://www.youtube.com/watch?v=9RkQ4CmXHKY