Skip to content

Commit 5025bb0

Browse files
committed
week 4 - merge two sorted lists
1 parent 5699081 commit 5025bb0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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

Comments
ย (0)