노드간의 연결을 확인할 수 있는 실력을 가졌는지 판별할 수 있는 문제
function addTwoNumbers(l1: ListNode | null, l2: ListNode | null): ListNode | null {
// 결과를 저장할 더미 노드 생성
let dummyHead = new ListNode(0);
let current = dummyHead;
let carry = 0; // 올림 수 초기화
// l1과 l2 중 하나라도 남아있거나 올림 수가 있는 동안 계속 반복
while (l1 !== null || l2 !== null || carry > 0) {
// l1과 l2의 현재 값을 가져옴 (없으면 0으로 처리)
const x = l1 ? l1.val : 0;
const y = l2 ? l2.val : 0;
// 현재 자릿수의 합 계산 (이전 올림 수 포함)
const sum = carry + x + y;
carry = Math.floor(sum / 10); // 새로운 올림 수 계산
current.next = new ListNode(sum % 10); // 현재 자릿수 값으로 새 노드 생성
// 포인터들을 다음으로 이동
current = current.next;
if (l1) l1 = l1.next;
if (l2) l2 = l2.next;
}
// 더미 노드의 다음 노드부터가 실제 결과이므로 이를 반환
return dummyHead.next;
}