본문으로 바로가기

leetcode. Add Two Numbers

category Algorithm/문제 2021. 1. 14. 18:37

문제 요약

비어있지 않은 두개의 링크드 리스트를 준다. 이 링크드 리스트는 음수가 아닌 정수로 이루어져있고 역순으로 저장돼있다

두 리스트를 더해서 링크드 리스트로 반환하라

제공되는 Linked List는 다음과 같다

 function ListNode(val, next) {
     this.val = (val===undefined ? 0 : val)
     this.next = (next===undefined ? null : next)
 }

example

주어지는 정수가 243 과 564 라면

3-> 4-> 2 리스트와
4-> 6-> 5 리스트가 주어진다

이 둘을 더해서

7-> 0-> 8의 리스트를 반환하는 함수를 작성하면 되는 것

풀이

function ListNode(val, next) {
    this.val = (val === undefined ? 0 : val)
    this.next = (next === undefined ? null : next)
}
let l1 = new ListNode(2, new ListNode(4, new ListNode(3,null)));
let l2 = new ListNode(5, new ListNode(6, new ListNode(4,null)));

const addTwoNumbers = function(l1, l2) {
    let newList = new ListNode(0);
    let pointer = newList;
    let carry = 0;

    while (l1||l2||carry){
        const number1 = l1 ? l1.val : 0;
        const number2 = l2 ? l2.val : 0;
        let sum = number1 + number2 + carry;
        carry = Math.floor(sum / 10);
        sum = sum % 10;
        pointer.next = new ListNode(sum);
        pointer = pointer.next;
        l1 = l1 ? l1.next : null;
        l2 = l2 ? l2.next : null;
    }
    return newList.next;
};

console.log(addTwoNumbers(l1,l2));

'Algorithm > 문제' 카테고리의 다른 글

leetcode. ZigZag Conversion  (0) 2021.01.18
leetcode. Longest Substring Without Repeating Characters  (0) 2021.01.16
leetcode. Two Sum  (0) 2021.01.11
algospot. PICNIC (미해결)  (0) 2021.01.10
baekjoon. 단어 정렬  (0) 2021.01.04