๐Ÿฅž BE
home

148_Sort List

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/08/13
ํƒœ๊ทธ
์ •๋ ฌ
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) return l2; if (l2 == null) return l1; // ์•ž์— ๋…ธ๋“œ๊ฐ€ ๊ฐ’์ด ๋” ํฌ๋‹ค๋ฉด ์Šค์™‘ ์ง„ํ–‰ if (l1.val > l2.val) { ListNode temp = l1; l1 = l2; l2 = temp; } // ์•ž์— ๋…ธ๋“œ์˜ ๋‹ค์Œ ๊ฒฐ๊ณผ๋Š” ์žฌ๊ท€๋กœ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋กœ ์ง€์ • l1.next = mergeTwoLists(l1.next, l2); // l1 ์ชฝ์œผ๋กœ ์ž‘์€ ๋…ธ๋“œ๋ฅผ ์Šค์™‘ํ•˜๋ฏ€๋กœ l1 ๋ฆฌํ„ด return l1; } public ListNode sortList(ListNode head) { // null์ธ ๋…ธ๋“œ๊นŒ์ง€ ๋ถ„ํ• ๋˜๋ฉด ์•„๋ฌด๋Ÿฐ ์ฒ˜๋ฆฌ ์—†์ด ๋ฆฌํ„ด if (head == null || head.next == null) return head; // ๋Ÿฌ๋„ˆ ๊ธฐ๋ฒ• ํ™œ์šฉ ListNode half = null, slow = head, fast = head; while (fast != null && fast.next != null) { half = slow; slow = slow.next; fast = fast.next.next; } // head๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ๋…ธ๋“œ์™€ slow๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ๋Š๋Š”๋‹ค. half.next = null; // ๋ถ„ํ• (divide) ์žฌ๊ท€ ํ˜ธ์ถœ. ๊ณ„์† ๋ถ„ํ• ํ•ด์„œ ๋” ์ด์ƒ ๋ถ„ํ•  ๋ชปํ•˜๋Š” ๋‹จ์œ„๊นŒ์ง€ ListNode l1 = sortList(head); ListNode l2 = sortList(slow); // ์ •๋ณต(conquer)์„ ์‹œ์ž‘, ๊ฒฐ๊ณผ ๋ฆฌํ„ด return mergeTwoLists(l1, l2); } }
Java
๋ณต์‚ฌ

๋Ÿฌ๋„ˆ ๊ธฐ๋ฒ•

ListNode half = null, slow = head, fast = head; while (fast != null && fast.next != null) { half = slow; slow = slow.next; fast = fast.next.next; }
Java
๋ณต์‚ฌ
half, slow, fast 3๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ณ  slow๋Š” ํ•œ ์นธ์”ฉ, fast๋Š” ๋‘ ์นธ์”ฉ ์•ž์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด fast๊ฐ€ ๋งจ ๋์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, slow๋Š” ์ค‘์•™์— ๋„์ฐฉํ•ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ half๋Š” slow์˜ ๋ฐ”๋กœ ์ง์ „ ๋…ธ๋“œ ๊ฐ’์ด ๋œ๋‹ค.
half.next = null;
Java
๋ณต์‚ฌ
๊ทธ๋ฆฌ๊ณ  ์ด์™€ ๊ฐ™์ด half.next๋ฅผ null๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์›๋ž˜ ์‹œ์ž‘ ๋…ธ๋“œ์˜€๋˜ head์™€ head๋ฅผ ์ด์–ด๋ฐ›์•„ ์ง„ํ–‰ํ–ˆ๋˜ slow๋Š” ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ๋Š์–ด์ง€๊ฒŒ ๋œ๋‹ค.
ListNode l1 = sortList(head); ListNode l2 = sortList(slow);
Java
๋ณต์‚ฌ
์ดํ›„์—๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ง„ํ–‰ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ฒ˜์Œ์—๋Š” 2๊ฐœ๋กœ ์ชผ๊ฐœ์ง€์ง€๋งŒ, ์ดํ›„์— ๊ณ„์†ํ•ด์„œ ์ชผ๊ฐœ์ง€๊ธฐ ๋•Œ๋ฌธ์—(๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๋‹จ์œ„๊นŒ์ง€) ๊ฒฐ๊ตญ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹จ์ผ ์•„์ดํ…œ์œผ๋กœ ๋ชจ๋‘ ์ชผ๊ฐœ์ง€๊ฒŒ ๋œ๋‹ค. ์ดํ›„, mergeSort ๊ณผ์ •์—์„œ ๋ณ‘ํ•ฉ๊ณผ ๋™์‹œ์— ์ •๋ ฌ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

๋Ÿฌ๋„ˆ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ ๋ณ‘ํ•ฉ ์ •๋ ฌ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž!