Skip to content

Commit 9be4f2b

Browse files
committed
Merge Two Sorted Lists solution
1 parent 0fc3c26 commit 9be4f2b

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* ๋ฌธ์ œ ์ •์˜
3+
* ์ž…๋ ฅ: ๋‘ ๊ฐœ์˜ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ ๋…ธ๋“œ list1๊ณผ list2
4+
* ์ถœ๋ ฅ: ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•œ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ ๋…ธ๋“œ
5+
* ์กฐ๊ฑด: ๋‘ ๋ฆฌ์ŠคํŠธ๋Š” ์ด๋ฏธ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Œ
6+
*
7+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•
8+
* 1. ๋”๋ฏธ ํ—ค๋“œ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ ์„ ์„ค์ •
9+
* 2. ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง„ ๋…ธ๋“œ๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
10+
* 3. ํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ์˜ ๋‚จ์€ ๋…ธ๋“œ๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์—ฐ๊ฒฐ
11+
* 4. ๋”๋ฏธ ํ—ค๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜
12+
* 5. ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n + m) (n: list1์˜ ๊ธธ์ด, m: list2์˜ ๊ธธ์ด)
13+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1) (์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„ ์‚ฌ์šฉ ์—†์Œ)
14+
*
15+
* ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ณต๊ฐ„๋ณต์žก๋„๋Š” ์žฌ๊ท€ํ˜ธ์ถœ ์Šคํƒ ๋•Œ๋ฌธ์— O(n + m)์ด ๋จ
16+
* ๋”ฐ๋ผ์„œ, ๋ฐ˜๋ณต์ (iterative) ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ O(1)๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
17+
*/
18+
19+
/**
20+
* @param {ListNode} list1 - ์ฒซ ๋ฒˆ์งธ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ
21+
* @param {ListNode} list2 - ๋‘ ๋ฒˆ์งธ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ
22+
* @return {ListNode} - ๋ณ‘ํ•ฉ๋œ ์ •๋ ฌ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ
23+
*/
24+
var mergeTwoLists = function (list1, list2) {
25+
let dummy = new ListNode(-1); // ๋”๋ฏธ ํ—ค๋“œ ๋…ธ๋“œ ์ƒ์„ฑ (๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ )
26+
27+
let current = dummy; // ํ˜„์žฌ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š” ํฌ์ธํ„ฐ
28+
29+
while (list1 !== null && list2 !== null) {
30+
if (list1.val <= list2.val) {
31+
current.next = list1;
32+
list1 = list1.next;
33+
} else {
34+
current.next = list2;
35+
list2 = list2.next;
36+
}
37+
// ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ํฌ์ธํ„ฐ ์ด๋™ใ„ฑใ„ฑ
38+
current = current.next;
39+
}
40+
41+
// ๋‚จ์•„์žˆ๋Š” ๋…ธ๋“œ๋“ค์„ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์—ฐ๊ฒฐ (list1์ด๋‚˜ list2 ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋ฏธ null์ผ ํ…Œ๋‹ˆ๊นŒ)
42+
current.next = list1 !== null ? list1 : list2;
43+
44+
// ๋”๋ฏธ ํ—ค๋“œ ๋‹ค์Œ ๋…ธ๋“œ๊ฐ€ ์‹ค์ œ ๊ฒฐ๊ณผ์˜ ์‹œ์ž‘ ๋…ธ๋“œ๊ฐ€ ๋จ
45+
return dummy.next;
46+
};

0 commit comments

Comments
ย (0)