Leetcode - 2. Add Two Numbers
Coding Test

Leetcode - 2. Add Two Numbers

일시불

답안

내 풀이는 전가산기를 구현하는 것이었다.

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        init = head = ListNode()
        nxt = 0
        while True:
            temp = ListNode()
            addition = nxt
            if l1:
                addition += l1.val
                l1 = l1.next
            if l2:
                addition += l2.val
                l2 = l2.next
                
            cur = addition % 10
            nxt = addition // 10
            head.val = cur
            if (l1 or l2) or nxt:
                head.next = temp
                head = head.next
            else:
                break
                        
        return init

while 문 종료 조건이 if문으로 결정되는데, 이 부분이 깔끔하지 못하다. 모범 답안 역시 전가산기로 구현되었는데 다음과 같다.

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        init = head = ListNode()
        carry = 0
        while l1 or l2 or carry:
            sums = 0
            if l1:
                sums += l1.val
                l1 = l1.next
            if l2:
                sums += l2.val
                l2 = l2.next

            carry, val = divmod(sums + carry, 10)
            head.next = ListNode(val)
            head = head.next

        return init.next

변수명도 훨씬 직관적이고, temp 같은 불필요한 변수 할당이 없어서 같은 논리 구조라도 더 깔끔하게 작성이 가능하다.