[LeetCode] 2. Add Two Numbers
                    
                2021. 1. 14. 01:54ㆍProblem Solving/LeetCode
LeetCode 2. Add Two Numbers
https://leetcode.com/problems/add-two-numbers/
Add Two Numbers - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
Solution
# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        node, prev = head, None
        while node != None:
            next, node.next = node.next, prev
            prev, node = node, next
        return prev
    def makeNewList(self, result_int: int) -> ListNode:
        tmp = str(result_int)
        head = ListNode(tmp[0])
        prev = head
        for i in range(1, len(tmp)):
            node = ListNode(tmp[i])
            head.next = node
            head = head.next
        return prev
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        # l1, l2 역순으로 뒤집기
        l1 = self.reverseList(l1)
        l2 = self.reverseList(l2)
        # 하나씩 리스트로 저장
        l1_list = []
        l2_list = []
        while l1:
            l1_list.append(str(l1.val))
            l1 = l1.next
        while l2:
            l2_list.append(str(l2.val))
            l2 = l2.next
        # 리스트를 str로
        l1_str = "".join(l1_list)
        l2_str = "".join(l2_list)
        # 두 수 더하기
        result_int = int(l1_str) + int(l2_str)
        # 거꾸로 연결리스트에 담기
        result_list = self.makeNewList(result_int)
        result_list = self.reverseList(result_list)
        return result_list

- l1, l2 역순으로 뒤집기
 - l1, l2 리스트로 변환
 ''.join이용해 리스트를 문자열로 이어 붙임- 붙인 문자열들을 정수형으로 변환해 더함
 - 더한 정수값을 연결리스트로 변환
 - 연결리스트 역순으로 변환
 
복잡해 보였지만
책 하나도 안보고 풀기 성공 :)
그리고 책의 전가산기 풀이법은 정말 예술이다..ㅋㅋ
Study
- 단순 연결리스트의 역순(Reversed Single Linked List)
(추후에 정리 할 것!) - divmod()
 
Reference
- 파이썬 알고리즘 인터뷰
 
![]()  | 
  | 
반응형
    
    
    
  'Problem Solving > LeetCode' 카테고리의 다른 글
| [LeetCode] 328. Odd Even Linked List (0) | 2021.01.15 | 
|---|---|
| [LeeCode] 24. Swap Nodes in Pairs (0) | 2021.01.14 | 
| [LeetCode] 206. Reverse Linked List (0) | 2021.01.13 | 
| [LeetCode] 234. Palindrome Linked List (0) | 2021.01.12 | 
| [LeetCode] 121. Best Time to Buy and Sell Stock (0) | 2021.01.11 | 
