LeetCode - 2. Add Two Numbers

less than 1 minute read

주어진 Linked List 클래스의 Traversal과, 숫자를 다시 Linked List로 만드는 것이 관건.

Leet Code의 Python3 코드 형태가 아직 익숙하지 않아서 헤맸다. 시간과 메모리가 상위에 들지 않아 더 효율적인 코드가 있을 듯 하다.

runtime : 101ms / memory : 14.1MB

# 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]:
        num1 = self.traverse_list(l1)
        num2 = self.traverse_list(l2)
        
        answer = num1 + num2
        
        return self.set_list_node(answer)
        
    def traverse_list(self, list_node):
        num = ''
        num += str(list_node.val)
        
        while list_node.next != None:
            list_node = list_node.next
            num += str(list_node.val)
            
        return int(num[::-1])
    
    def set_list_node(self, num):
        prev = None
        for node in str(num):
            curr = ListNode(node, prev)
            prev = curr
        
        return curr