N

(Leet Code JS)Add Strings 본문

Leet Code 알고리즘

(Leet Code JS)Add Strings

naeunchan 2022. 5. 13. 14:11
728x90
반응형

https://leetcode.com/problems/add-strings/

 

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

문자열로 이뤄진 두 수를 더한 값을 문자열로 다시 리턴하면 된다.

각 자리수를 number형으로 바꾸고 더한 값을 answer 배열에 push하는 과정이다.

 

먼저 두 수의 자릿수를 맞춘다.

num1과 num2의 길이를 비교하여 더 작은 길이를 num1으로 바꿔준다.

 

이후 num1은 num2의 길이만큼 0을 앞에 붙여준다.

 

다음은 각 자릿수를 뒤에서부터 접근하여 number 형으로 바꾼다.

sum = up + (+num1[i]) + (+num2[i])

num1과 num2 앞에 +를 붙이면 string -> number로 변한다.

만약 sum이 10 이상이라면 올림수(up)는 1이 되고, answer에는 sum - 10을 넣어준다.

10 미만이라면 올림수는 0, answer에는 sum을 넣어준다.

 

모든 for문이 끝나면 up이 남아있는지 확인하여

남아있다면 추가로 1을 answer에 push.

 

리턴값은 answer을 뒤집어(reverse) join하여 나온 문자열이다.

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
var addStrings = function(num1, num2) {
    let sum = 0;
    let up = 0;
    let answer = [];
    
    if(num1.length > num2.length){
        [num1, num2] = [num2, num1];
    }
    
    for(let i = num1.length; i < num2.length; i++){
        num1 = "0" + num1;
    }
    
    for(let i = num2.length - 1; i >= 0; i--){
        sum = up + (+num1[i]) + (+num2[i]);
        
        if(sum >= 10){
            up = 1;
            answer.push(sum - 10);
        } else{
            up = 0;
            answer.push(sum);
        }
    }
    
    if(up){
        answer.push("1");
    }
    
    return answer.reverse().join("");
};
728x90
반응형