
😎풀이
- Stack 자료구조를 통해 값을 기록하며 포인터를 가장 뒷 자릿수로 이동
- 끝자리부터, 각 자릿수를 더한 값을 ListNode에 할당하며, 이전 노드를 연결시킴
- 최종자리의 올림수까지 계산(10 이상의 수로 종료된 경우 1의 노드가 최전방 위치)하여 노드 생성 및 연결
function addTwoNumbers(l1: ListNode | null, l2: ListNode | null): ListNode | null {
const l1Arr = []
const l2Arr = []
while(l1) {
l1Arr.push(l1.val)
l1 = l1.next
}
while(l2) {
l2Arr.push(l2.val)
l2 = l2.next
}
let carry = 0
let prevNode = null
while(l1Arr.length || l2Arr.length || carry) {
const curL1 = l1Arr.pop() ?? 0
const curL2 = l2Arr.pop() ?? 0
const sum = curL1 + curL2 + carry
const curNode = new ListNode(sum % 10, prevNode)
carry = sum >= 10 ? 1 : 0
prevNode = curNode
}
return prevNode
};