LeetCode 05: Add Two Numbers

Daisy·2022년 12월 24일

Leetcode

목록 보기
5/7

문제링크: https://leetcode.com/problems/add-two-numbers/

Problem

임의의 길이의 두 linked list가 주어졌을 때, 두 list의 역순에 해당하는 값(e.g., 1→2→3은 321을 나타냄)들을 더해 linked list의 형태로 값을 반환하는 문제이다.

List1: 2->4->3 (342)
List2: 5->6->4 (465)
Result: 7->0->8 (342+465=807)

Solution

각 list의 head가 일의자리 수이므로, head부터 차례대로 각 자릿수의 합을 구해 최종 linked list의 val값에 저장해준다.

각 자릿수의 합이 10을 넘으면 mod10의 값을 sum에 남겨주고, l1.next, l2.next, sum의 값이 하나라도 존재하는 동안 두 리스트를 순회해주며 최종 linked list의 값을 채워나가면 된다.

rtype = ListNode()
current = rtype
sumval = 0
while (l1 or l2 or sumval):
    if (l1):
        sumval += l1.val
        l1 = l1.next
    if (l2):
        sumval += l2.val
        l2 = l2.next
    
    current.val = sumval % 10
    sumval = sumval // 10

    if (l1 or l2 or sumval):
        current.next = ListNode()
        current = current.next

0개의 댓글