add-two-numbers

Tasic·2021년 1월 19일
0

Algorithm

목록 보기
2/4

Question

링크
두개의 Linked-List에 있는 값들을 더해서 Linked List 형태로 표시
l1 = 2 -> 4 -> 3 : 342
l2 = 5 -> 6 -> 4 : 465
result = 7 -> 0 -> 8 : 807

Code

# 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: ListNode, l2: ListNode) -> ListNode:

        
        result = ListNode()
        preNode = result
        
        # 첫번째 노드 세팅

       # 21.01.20 변경
        nextAddValue = (int) (sumValue / 10)
        sumValue = sumValue % 10
            
        preNode.val = sumValue
        
        
         # 다음노드가 None인지 확인
        while l1.next != None or l2.next != None :

            # l1, l2 Linked-List의 다음번 노드가 있으면 이동 후 값 얻고, 없으면 0으로 세팅
            
            if l1.next != None :
                l1 = l1.next
                l1Value = l1.val
            else :
                l1Value = 0

                
            if l2.next != None :
                l2 = l2.next
                l2Value = l2.val
            else :
                l2Value = 0
                
            # l1 + l2 + 이전 노드 자리수 올림 발생 값 
            sumValue = l1Value + l2Value + nextAddValue    
            
            
            # 더한 값이 2자리 이상이면 하는 처리
            if sumValue >= 10 :
                nextAddValue = 1
                sumValue = sumValue - 10
            else :
                nextAddValue = 0
            
            # 계산된 값을 바탕으로 새로운 노드 추가 및 이동
            newNode = ListNode()
            newNode.val = sumValue
            preNode.next = newNode
            preNode = newNode

            
        # 마지막 노드가 올림 발생 값 있으면 val=1 노드 추가
        if nextAddValue >= 1 :
            newNode = ListNode()
            newNode.val = nextAddValue
            preNode.next = newNode
            preNode = newNode
                    
        return result
        

Result

Runtime: (60 ms), faster than (96.49%) of Python3 online submissions for Add Two Numbers.
Memory Usage: (14.5 MB), less than (12.17%) of Python3 online submissions for Add Two Numbers.

21.01.20 변경

Before

if sumValue >= 10 :
    nextAddValue = 1
    sumValue = sumValue - 10
else :
    nextAddValue = 0

After

nextAddValue = (int) (sumValue / 10)
sumValue = sumValue % 10
profile
블로그 옮겼습니다 (https://jotasic.github.io)

0개의 댓글