Computer Science/Coding Test
LeetCode: 2. Add Two Numbers
focalpoint
2021. 8. 10. 13:39
1. 노가다성 답안
class Solution:
def addTwoNumbers(self, l1, l2, up=0):
if l1 != None and l2 != None:
val1 = l1.val
val2 = l2.val
val = (val1 + val2 + up) % 10
up = (val1 + val2 + up) // 10
ret_node = ListNode(val=val)
ret_node.next = self.addTwoNumbers(l1.next, l2.next, up=up)
elif l1 == None and l2 != None:
val2 = l2.val
val = (val2 + up) % 10
up = (val2 + up) // 10
ret_node = ListNode(val=val)
ret_node.next = self.addTwoNumbers(l1, l2.next, up=up)
elif l1 != None and l2 == None:
val1 = l1.val
val = (val1 + up) % 10
up = (val1 + up) // 10
ret_node = ListNode(val=val)
ret_node.next = self.addTwoNumbers(l1.next, l2, up=up)
else:
val = up
if up != 0:
ret_node = ListNode(val=val)
else:
return None
return ret_node
2. 짧은 답안
class Solution:
def addTwoNumbers(self, l1, l2, up=0):
val = (l1.val + l2.val + up) % 10
up = (l1.val + l2.val + up) // 10
ret_node = ListNode(val=val)
now_node = ret_node
while l1.next != None or l2.next != None or up != 0:
if l1.next == None:
l1.next = ListNode(val=0)
if l2.next == None:
l2.next = ListNode(val=0)
val = (l1.next.val + l2.next.val + up) % 10
up = (l1.next.val + l2.next.val + up) // 10
next_node = ListNode(val=val)
now_node.next = next_node
now_node = next_node
l1 = l1.next
l2 = l2.next
return ret_node