알고리즘 풀이/LeetCode

[LeetCode] 2. Add Two Numbers

12.tka 2022. 6. 19. 11:25
728x90

문제 보기

[사용한 알고리즘]

x

 

[설명]

연결 리스트의 개념을 이해하고 있으면 크게 어렵지 않은 문제라고 생각한다.

l1, l2 각 값을 더한 후 해당 값을 역순으로 저장하는 연결 리스트를 구현하면 된다.

1. l1 연결리스트 값을 추출한다.

2. l2 연결리스트 값을  추출한다.

3. 추출한 두 값을 더한다.

4. 더한 값을 역순으로 연결 리스트에 저장한다.

 

[코드]

# 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        
        l1_num = l2_num = ''
        
        while l1:
            l1_num = str(l1.val) + l1_num
            l1 = l1.next
            
        while l2:
            l2_num = str(l2.val) + l2_num
            l2 = l2.next
            
        total = list(str(int(l1_num) + int(l2_num)))
        
        output = ListNode()
        curr = output
        for i in range(len(total)):
            print('total', total[i])
            curr.val = int(total[-i - 1])
            if i != len(total) - 1:
                curr.next = ListNode()
                curr = curr.next
        
        return output
728x90

'알고리즘 풀이 > LeetCode' 카테고리의 다른 글

[LeetCode] 3. Longest Substring Without Repeating Characters  (0) 2022.06.26
[LeetCode] 1. Two Sum  (0) 2022.06.12