본문 바로가기

ProgramSoliving

리트코드: 2. Add Two Numbers javascript

반응형

 

2년만에 PS를 다시 시작한다.

시작은 무난한 리코드 미디엄 문제..

 

ListNode 라는 릿코드에서 제공하는 자료구조를 이용해서 문제를 해결한다. ListNode는 단방향 연결리스트이다.

각각의 l1, l2의 reverse 값을 더한후 다시 reverse 하기 때문에 처음 각각의 노드들을 순회하면서 값을 더해주는 값 자체가 정답이된다.

 

주의할점은 각각의 노드에서 더이상 순회할게 없으면 0 이 될것이고, 각각의 노드에서 10이상의 값은 다음 node로 넘겨주면 된다.

while 탈출 조건으로는 다음으로 넘길값이 없으면서 순회할 노드가 없는 경우 탈출하게 된다.

 

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let tmp = 0;
    const result = new ListNode();
    let cur = result;
    while(true) {
        const val1 = l1 == null ? 0 : l1.val;
        const val2 = l2 == null ? 0 : l2.val;
        const sum = val1 + val2 + tmp;
        const val = sum % 10;
        tmp = parseInt(sum / 10);
        cur.val = val;

        if(l1 != null) l1 = l1.next;
        if(l2 != null) l2 = l2.next;
        if(tmp == 0 && l1 == null && l2 == null) break;
        
        cur.next = new ListNode();
        cur = cur.next;
    }
    return result;
};
반응형