두 Sorted Linked List 를 합치는 문제이다.

이미 각각 정렬이 되어 있으므로 처음 값부터 두 리스트 값을 비교해가며 작은 수부터 채워나가면 된다.

 

시행착오가 조금 있었던 부분

  1. temp.next = l2   ## temp 리스트의 next에 l2 연결
  2. temp = temp.next ## temp 한칸 이동!!
  3. temp.val = l2.val ## l2값 대입
  4. l2.next ## l2 한칸 이동

temp 값을 넣고 한칸 이동해야된다는 사실을 망각했다.

그래도 처음보다 Linked List에 익숙해진 것 같아서 뿌듯하다.

 

 

소스 코드

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        temp = ListNode()
        head = temp
        while True:
            if l1 == None and l2 == None:
                break
            elif l1 == None:
                temp.next = l2
                temp = temp.next
                temp.val = l2.val
                l2 = l2.next
            elif l2 == None:
                temp.next = l1
                temp = temp.next
                temp.val = l1.val
                l1 = l1.next
            else:
                if l1.val >= l2.val:
                    temp.next = l2
                    temp = temp.next
                    temp.val = l2.val
                    l2 = l2.next
                elif l1.val < l2.val:
                    temp.next = l1
                    temp = temp.next
                    temp.val = l1.val
                    l1 = l1.next
        return head.next

'Leetcode Top 100' 카테고리의 다른 글

23. Merge k Sorted Lists  (0) 2021.01.19
22. Generate Parentheses  (0) 2021.01.18
20. Valid Parentheses  (0) 2021.01.18
19. Remove Nth Node From End of List  (0) 2021.01.12
17. Letter Combinations of a Phone Number  (0) 2021.01.11

+ Recent posts