[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 |