|
| 1 | +# ์๊ฐ ๋ณต์ก๋: O(m + n) |
| 2 | +# - ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(list1, list2)๋ฅผ ๊ฐ๊ฐ ํ ๋ฒ์ฉ๋ง ์ํํ๋ฉด ๋๋ค. |
| 3 | +# - ๊ฐ ๋
ธ๋๋ฅผ ์ ํํ ํ ๋ฒ์ฉ๋ง ๋น๊ตยท์ด๋ํ๋ฏ๋ก ์ ์ฒด ๊ธธ์ด์ ์ ํ ์๊ฐ. |
| 4 | + |
| 5 | +# ๊ณต๊ฐ ๋ณต์ก๋: O(1) |
| 6 | +# - ์๋ก์ด ๋
ธ๋๋ฅผ ์์ฑํด ๋ฆฌ์คํธ๋ฅผ ๋ณต์ ํ์ง ์๊ณ , |
| 7 | +# ๊ธฐ์กด ๋ฆฌ์คํธ ๋
ธ๋๋ค์ ๊ทธ๋๋ก ์ด์ด๋ถ์ด๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฑฐ์ ์๋ค. |
| 8 | +# - ์ฐ๊ฒฐ ์์
์ ์ํ dummy ๋
ธ๋ 1๊ฐ๋ง ์ฌ์ฉ. |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +# Definition for singly-linked list. |
| 13 | +# class ListNode: |
| 14 | +# def __init__(self, val=0, next=None): |
| 15 | +# self.val = val |
| 16 | +# self.next = next |
| 17 | +class Solution: |
| 18 | + def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: |
| 19 | + # ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ฒซ ์ง์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋๋ฏธ(Dummy) ๋
ธ๋๋ฅผ ๋ง๋ ๋ค. |
| 20 | + root_node = ListNode() |
| 21 | + cur_node = root_node # ํ์ฌ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ฅผ ์ด์ด๊ฐ๋ ํฌ์ธํฐ |
| 22 | + |
| 23 | + # ๋ ๋ฆฌ์คํธ๊ฐ ๋ชจ๋ ๋จ์์๋ ๋์ ๋ฐ๋ณตํ๋ค. |
| 24 | + # - ๊ฐ ๋ฆฌ์คํธ์ head๋ฅผ ๋น๊ตํด ๋ ์์ ์ชฝ์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ๋ถ์ธ๋ค. |
| 25 | + while list1 and list2: |
| 26 | + if list1.val < list2.val: |
| 27 | + # list1์ ๋
ธ๋๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐํ๊ณ list1 ํฌ์ธํฐ๋ฅผ ๋ค์์ผ๋ก ์ด๋ |
| 28 | + cur_node.next = list1 |
| 29 | + list1 = list1.next |
| 30 | + else: |
| 31 | + # list2์ ๋
ธ๋๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐํ๊ณ list2 ํฌ์ธํฐ๋ฅผ ๋ค์์ผ๋ก ์ด๋ |
| 32 | + cur_node.next = list2 |
| 33 | + list2 = list2.next |
| 34 | + |
| 35 | + # ๊ฒฐ๊ณผ ๋ฆฌ์คํธ ํฌ์ธํฐ๋ ํ ์นธ ์ ์ง |
| 36 | + cur_node = cur_node.next |
| 37 | + |
| 38 | + # ์ด๋ ํ์ชฝ์ด ๋๋ฌ๋ค๋ฉด, ๋จ์ ์๋ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ทธ๋๋ก ์ด์ด๋ถ์ธ๋ค. |
| 39 | + # - ์ด๋ฏธ ์ ๋ ฌ๋์ด ์์ผ๋ฏ๋ก ์ถ๊ฐ ๋น๊ต ์์ด ํ ๋ฒ์ ์ฐ๊ฒฐ ๊ฐ๋ฅ |
| 40 | + cur_node.next = list1 or list2 |
| 41 | + |
| 42 | + # dummy ๋
ธ๋ ๋ค์๋ถํฐ๊ฐ ์ค์ ๋จธ์ง๋ ๋ฆฌ์คํธ์ ์์์ |
| 43 | + return root_node.next |
0 commit comments