[Leet Code] 2. Add Two Numbers
두번째 포스팅할 Leet Code 문제는 2. Add Two Numbers 문제이다.
위의 이미지를 통해 문제를 확인할 수 있다.
Problem
You are given two non-empty linked lists representing two non-negative integers.
The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example :
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
Solutions :
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def add_two_numbers(self, l1: ListNode, l2: ListNode) -> ListNode:
l1_str: str = ''
l2_str: str = ''
while l1 is not None or l2 is not None:
if l1 is not None:
l1_str += str(l1.val)
l1 = l1.next
if l2 is not None:
l2_str += str(l2.val)
l2 = l2.next
l1_int: int = int(''.join(reversed(l1_str)))
l2_int: int = int(''.join(reversed(l2_str)))
answer_str: str = ''.join(reversed(str(l1_int + l2_int)))
answer: ListNode = ListNode()
cur_node: ListNode = ListNode()
for idx, num in enumerate(answer_str):
if idx == 0:
answer = ListNode(num)
cur_node = answer
else:
new_node: ListNode = ListNode(num)
if cur_node.next is not None:
cur_node = cur_node.next
cur_node.next = new_node
return answer
링크드 리스트로 구현되어 있고, 답 역시 링크드 리스트로 구하는 문제여서, 파이썬을 처음 공부하며 도움이 많이 되었다.
들어온 두 링크드 리스트를 순회하며, 문자열로 바꿔준 후, 그 문자열을 다시 정수로 바꿔주었다.
answer_str이라는 문자열 변수에는 위에서 구한 두 정수를 더하여 reverse 된 문자열을 넣어주었다.
이후, answer_str의 문자 하나하나를 순회하며 새로운 링크드 리스트를 구현해주었다.
댓글남기기