배고픈 개발자 이야기

[Python] Add Two Numbers 본문

알고리즘 문제/LEETCODE

[Python] Add Two Numbers

이융희 2021. 5. 6. 02:25
728x90

Medium 난이도 Acceptence 35.9% 문제

 

입력된 listnode 두개는 10진수의 숫자의 역순으로 원래의 두값을 더한 후 다시 역순으로 반환하면 되는 문제다.

 

더한값 sum과 carry값 및 반환용 dummy로 listnode 얕은복사값 사용

 

값은 두값 또는 carry값이 있을 경우 계속 계산한다.

 

해당 자리수의 값을 sum한 후 10의 몫을 carry값, 나머지를 해당자리수의 값으로 계산한다.

 

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        c = 0
        s = 0
        dummy = ListNode()
        curr = dummy

        while l1 or l2 or c:
            s = c
            if l1:
                s += l1.val
                l1 = l1.next
            if l2:
                s += l2.val
                l2 = l2.next
            c = s / 10
            curr.next = ListNode(s % 10)
            curr = curr.next

        return dummy.next

'알고리즘 문제 > LEETCODE' 카테고리의 다른 글

[Python] Letter Combination of a Phone Number  (0) 2021.05.06
[Python] Binary Tree Inorder Traversal  (0) 2021.05.06
[Python] 3Sum  (0) 2021.05.06
[Python] Longest Valid Parentheses  (0) 2021.05.06
[Python] Valid Parentheses  (0) 2021.05.06
Comments