LeetCode#2

minhyuk_ko·2022년 2월 19일
0

TIL

목록 보기
7/7

2. Add Two Numbers

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

입력

(2 -> 4 -> 3) + (5 -> 6 -> 4)

출력

(7 -> 0 -> 8)

풀이

class Solution:
	# 연결리스트 역순으로 뒤집기
    def reversenode(self, head: Optional[ListNode]):
        node, prev = head, None
        while node:
            next, node.next = node.next, prev
            prev, node = node, next
        return prev
	# 연결리스트 리스트화
    def to_list(self, list: ListNode):
        res = []
        while list:
            res.append(list.val) 
            list = list.next
        return res
	# 리스트 덧셈
    def addlist(self, list1:list, list2:list):
        l1 = int("".join(str(i) for i in list1))
        l2 = int("".join(str(i) for i in list2))
        res = l1 + l2
        return str(res)
	# 덧셈된 리스트 다시 연결리스트화
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        a = self.to_list(self.reversenode(l1))
        b = self.to_list(self.reversenode(l2))
        res = self.addlist(a,b)
        new:ListNode = None
        for i in res:
            node = ListNode(val=i)
            node.next = new
            new = node
        return new

로직

342 + 456 = 807 으로 linked-list를 역순으로 만들고 만든 연결리스트를 리스트로 추가시킨 후 리스트를 정수로 만들어 덧셈을 실행 후 문자열로 반환후 문자열을 연결리스트로 역순으로 반환한다.

느낀점

연결리스트의 기초 선물 세트같은 문제였다. 연결리스트 뒤집기, 연결리스트 리스트에 추가하기, 문자열을 연결리스트로 만들기까지 모두 한번씩 풀어보았던 연결리스트 기초 문제들을 응용해서 풀 수 있었던 재미있는 문제였다

profile
BE Developer

0개의 댓글