문제링크: https://leetcode.com/problems/add-two-numbers/
임의의 길이의 두 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)
각 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