https://youtu.be/wgFPrzTjm7s?si=DGP0R4iCDigdI7GY
https://youtu.be/oRVhdwpTbdU?si=SVZBd8Gq4JuCsoDP
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
# The digits are stored in reverse order: 역순으로 저장되어 있다.
# 링크드리스트를 순회하면서 값 더하면 됨
dummy = ListNode()
cur = dummy
carry = 0 # 두개 더했을때, 10의 자리 수, 올림수
while l1 or l2 or carry: # carry 가 0이 아니면, 추가해야하므로, 아주 중요!!
v1 = l1.val if l1 else 0
v2 = l2.val if l2 else 0
# new digit
val = v1 + v2 + carry
# 15
carry = val // 10
val = val % 10
cur.next = ListNode(val)
# update pointers
cur = cur.next
l1 = l1.next if l1 else None
l2 = l2.next if l2 else None
return dummy.next
# dummy 노드를 만들어서, 처리하고, dummy->next 를 반환하면 됨. **숙지하자**
✅ 정답 방식: 그냥 if l1:으로 체크
if l1:
l1 = l1.next
- l1이 현재 노드일 때 None이 아닌지만 확인하고,
- 다음으로 무조건 넘어감
- 그 다음 루프에서는 l1 == None이 되니까 종료됨
📌 요약
코드 | 동작문제 | |
if l1.next: | 마지막 노드에서 .next가 없으면 l1 그대로 → ❌ 무한 루프 | |
if l1: | 현재 노드가 있으면 l1 = l1.next → ✅ 자연스럽게 종료 |
❌ 틀린 방식: if l1.next:
- 만약 l1 = None이면, l1.next에서 에러 발생
- 반면 l1이 있을 때는 l1.next가 None이든 아니든 .next로 이동해야 합니다
✅ 정리
조건 | 설명 |
if l1: → l1 = l1.next | ✅ 안전하게 다음 노드로 이동 |
if l1.next: → l1 = l1.next | ❌ l1이 None이면 에러 발생 |
그래서 결론은:
“마지막 노드의 .next가 없어도 l1 자체는 존재하기 때문에,
그걸 기준으로 갱신해야 한다.”
최종 코드
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
carry = 0
cur= dummy = ListNode()
while l1 or l2 or carry:
n1 = l1.val if l1 else 0
n2 = l2.val if l2 else 0
total = n1+n2+carry
carry = total//10
cur.next = ListNode(total%10)
cur = cur.next
if l1:
l1 = l1.next
if l2:
l2 = l2.next
return dummy.next
'LeetCode > Grind169' 카테고리의 다른 글
101. Symmetric Tree ☆★★ (1) | 2024.12.11 |
---|---|
19. Remove Nth Node From End of List ☆★★★★ (1) | 2024.12.09 |
128. Longest Consecutive Sequence ☆★★★★★★★★★ (0) | 2024.12.03 |
[Top150] 36. Valid Sudoku ★★★ (0) | 2024.11.30 |
55. Jump Game ★★★ (0) | 2024.11.26 |