[LeetCode] 2. Add Two Numbers (두 수의 합)

yunan·2021년 1월 20일
0
post-thumbnail

🔦 문제 링크

🔊 파이썬 알고리즘 인터뷰 책을 참고했습니다.

  • 문제

역순으로 저장된 연결 리스트의 숫자를 더하는 문제

✍️ 풀이


연결 리스트로 합을 바로 구할 수 없다. 이를 파이썬의 리스트 형태로 변환하여 덧셈을 계산하고 다시 역연결리스트형태로 바꿔서 반환해보자.

🛠 코드


# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
	# 리스트를 뒤집는 함수
    def reversedList(self, node: ListNode) -> ListNode:
        prev = None
        while node:
            next, node.next = node.next, prev
            prev, node = node, next
            
        return prev
    
    # 리스트로 변환하는 함수
    def convertToList(self, node: ListNode) -> list:
        list : List = []
        while node:
            list.append(node.val)
            node = node.next
        return list
    
    # 파이썬의 리스트를 역연결리스트로 반환하는 함수
    def toReversedLinkedList(self, ret: str) -> ListNode:
        prev = None
        for r in ret:
            node = ListNode(r)
            node.next = prev
            prev = node
            
            
        return node
            
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        a = self.convertToList(self.reversedList(l1))
        b = self.convertToList(self.reversedList(l2))
        a = int(''.join(map(str, a)))
        b = int(''.join(map(str, b)))
        sm = a + b
        return self.toReversedLinkedList(str(sm))
            

📝 정리


🎈 참고


Book 링크

profile
Go Go

0개의 댓글