public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode();
ListNode head = result;
int sum = 0;
while(l1 != null || l2 != null || sum != 0){
if(l1 != null){
sum +=l1.val;
l1 = l1.next;
}
if(l2 != null){
sum += l2.val;
l2 = l2.next;
}
ListNode temp = new ListNode(sum % 10);
sum /= 10;
result.next = temp;
result = result.next;
}
return head.next;
}
여기서 중점은 while문의 sum!=0
조건이다.
저 조건이 없을 시에 l1이나 l2의 노드 수만큼까지만 합이 계산된다. sum은 나머지로 값을 재할당해주기 때문에 sum이 0이 아닐때까지 이어져야한다.
이는 예제3에서 잘 보여주고 있다.
9999999 + 9999 = 8999000 (x)
9999999 + 9999 = 89990001 (o)