addTwoNumbers

김_리트리버·2021년 3월 31일
0

[알고리즘]

목록 보기
37/47
# 뭘 하라는 거?

# 두개의 음이 아닌 정수로 구성된 연결 리스트가 주어짐

# 숫자들은 역순으로 들어가 있음

# 두 연결리스트에 있는 숫자를 더한 결과를 역순의 연결리스트로 만들어서 리턴해라

# 역순으로 되어있는 연결리스트를 뒤집음

# 하나의 숫자로 만듬

# 더함

# 더한 결과를 역순으로 연결리스트 만듬

# 리턴함

# 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:

        def reverseList(linked_list: ListNode) -> ListNode:

            rev = None

            while linked_list:

                temp = linked_list
                linked_list = linked_list.next
                temp.next = rev
                rev = temp

            return rev

        def changeToIntNumber(linked_list: ListNode) -> int:

            resultStr = ''

            while linked_list:
                resultStr = f'{resultStr}{linked_list.val}'
                linked_list = linked_list.next

            return int(resultStr)

        def changeToReversedLinkedList(number: int) -> ListNode:

            intlist = list(map(lambda x: int(x), list(str(number))))
            intlist = intlist[::-1]
            prev = None

            while intlist:

                node = ListNode(intlist.pop())
                node.next = prev
                prev = node

            return node

        return changeToReversedLinkedList(changeToIntNumber(reverseList(l1))+changeToIntNumber(reverseList(l2)))
profile
web-developer

0개의 댓글