개발 공부/알고리즘 문제 풀이

[LeetCode] 2. Add Two Numbers

종범2 2021. 6. 22. 21:22

문제

LeetCode 2. Add Two Numbers

 

https://leetcode.com/problems/add-two-numbers/

 

Add Two Numbers - 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

언어

자바스크립트(JavaScript)

 

접근 방법

  1. Loop를 이용하여 푼다.
  2. l1, l2를 이용하여 현재 node의 val을 계산한다.
  3. l1, l2의 next가 모두 존재하지 않으면 loop를 종료한다.
  4. next가 하나라도 존재한다면, node의 next를 다음 loop에서 정의한다.

코드

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let n1 = 0;
    let n2 = 0;
    let result = new ListNode(0); 
    let node = result;
    // 루프
    while(true){
        // node의 val 계산
        n1 = (l1 && l1.val) + (l2 && l2.val) + n2;
        if (n1 >= 10){
            n1 -= 10;
            n2 = 1;
        }else{
            n2 = 0;
        }
        node.val = n1;
        // l1, l2 next 확인
        l1 = l1 && l1.next;
        l2 = l2 && l2.next
        // l1, l2 모두 null이면 루프 종료
        if (l1 === null && l2 === null){
            if(n2 === 1){
                node.next = new ListNode(1);
            }
            break;
        }
        // l1, l2 둘 중 하나라도 null이 아니면 next 존재
        node.next = new ListNode(0);
        node = node.next
        
    }
    return result;
};

결과

Runtime: 124 ms, faster than 92.75% of JavaScript online submissions for Add Two Numbers.

Memory Usage: 44.1 MB, less than 56.13% of JavaScript online submissions for Add Two Numbers.

 

복기

  1. loop안에서 모든 코드를 작성해야 코드가 간단해진다.
  2. 로직을 먼저 생각했으면 더 빨리 해결했을 듯하다.