두 정렬 리스트를 오름차순으로 병합하는 문제이다.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def mergeTwoLists(self, list1, list2):
node = ListNode() # node라는 리스트 노드를 하나 선언하고
cur = node # node의 head를 cur(현재 노드)로 선언
while list1 and list2: # list1과 list2에 노드가 남아있는 동안
if list1.val < list2.val:
cur.next = list1
list1 = list1.next
else: # list2.val < list1.val
cur.next = list2
list2 = list2.next
cur = cur.next # 현재 노드의 head를 다음 노드로 지정해줌
if list1: # list1에는 남아있는 노드가 있지만 list2에는 노드가 남아있지 않을 경우
cur.next = list1
if list2: # list2에는 남아있는 노드가 있지만 list1에는 노드가 남아있지 않을 경우
cur.next = list2
return node.next # 리스트의 head를 반환 (node는 None이므로 node.next를 반환함)