๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์†Œ๊ฐœ ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)์€ ๋Œ€ํ‘œ์ ์ธ ๋ถ„ํ•  ์ •๋ณต(Divede and Conquer) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ ๋’ค ๊ฐ๊ฐ์„ ์žฌ๊ท€์ ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ์ •๋ ฌ๋œ ๋‘ ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•ฉ์ณ์„œ ์ •๋ ฌ๋œ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ž‘๋™ ๊ฐœ๋…๐Ÿ’ก ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ถ„ํ• (Divide): ์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๋‘ ๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ถ„ํ• ์€ ๋ฆฌ์ŠคํŠธ์˜ ์ค‘๊ฐ„ ์ง€์ ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ •๋ณต(Conquer): ๊ฐ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณ‘ํ•ฉ์ •๋ ฌ์„ ์ด์šฉํ•ด ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ž‘์•„์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ(Merge): ์ •๋ ฌ๋œ ๋‘ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. 0๊ฐœ ์š”์†Œ, 1๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์ด ..

article thumbnail
JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์†Œ๊ฐœ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ, ๊ฐ ์›์†Œ๋ฅผ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ณ ๊ธ‰ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ํฐ ๋ฐฐ์—ด์ด๋‚˜ ์‹œ๊ฐ„์ œํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ // ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• function insertionSort(array) { for (let i = 1; i = 0 && array[j] > current) { array[j + 1] = array[j]; j--; } array[j ..

article thumbnail
JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ์„ ํƒ ์ •๋ ฌ(Selection Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์†Œ๊ฐœ ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ๋งจ ์•ž์— ์œ„์น˜์‹œํ‚ค๊ณ , ๊ทธ๋‹ค์Œ์œผ๋กœ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„ ๋‘ ๋ฒˆ์งธ ์œ„์น˜์— ์œ„์น˜์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ณด๋‚ด์ง„ ์›์†Œ๋Š” ๋” ์ด์ƒ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐœ๋… ์„ ํƒ ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ฝ”๋“œ ๊ตฌํ˜„์ด ์‰ฌ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์ง€๋งŒ, ๊ทธ๋งŒํผ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋†’์•„ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์œผ๋กœ, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋”์šฑ ์‹ฌํ•ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ function selectionSort(arr) { const n = arr.length; for (let i = 0; i < n - 1; i++) { let minIndex = i; for (let..

article thumbnail
JavaScript๋กœ ์•Œ์•„๋ณด๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ

์†Œ๊ฐœ ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ '๊ฑฐํ’ˆ(Bubble)'์ฒ˜๋Ÿผ ์„œ๋กœ ๊ตํ™˜ํ•ด ๊ฐ€๋ฉฐ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‚˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๊ฐœ๋…์€ ๋งŒ์•ฝ ์ˆซ์ž ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋” ํฐ ์ˆซ์ž๊ฐ€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋’ค๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ค ํ•ญ๋ชฉ์ด ๋” ํฌ๋ฉด ๊ตํ™˜ํ•˜๊ณ , ๋‹ค์Œ ํ•ญ๋ชฉ๊ณผ ๋น„๊ตํ•˜๊ณ , ๋‹ค์Œ ํ•ญ๋ชฉ๋ณด๋‹ค ๋” ํฌ๋ฉด ๋˜ ๊ตํ™˜์„ ํ•˜๊ณ , ๋‹ค์‹œ ๋‹ค์Œ ํ•ญ๋ชฉ๊ณผ ๋น„๊ตํ•˜๋ฉด์„œ ๋ฐ˜๋ณต์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ์˜ ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ƒ๋‹จ์„ ํ–ฅํ•ด์„œ ๊ฐ’์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ #1 function bubbleSort(arr)..

article thumbnail
๋น…์˜ค(Big O) ํ‘œ๊ธฐ๋ฒ•์ด ๋ญ˜๊นŒ? ์–ด๋–ป๊ฒŒ ๋ณด๋Š” ๊ฑฐ์ง€?

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ์ž๊พธ ๋น…์˜ค(Big O), ๋น…์˜ค(Big O) ๊ฑฐ๋ฆฌ๋Š”๋ฐ ๋„๋Œ€์ฒด ๋น…์˜ค(Big O)๊ฐ€ ๋ญ๊ณ  ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์ง€ ๋ชฐ๋ผ์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. 1. ๋น…์˜ค(Big O) ํ‘œ๊ธฐ๋ฒ•์€ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์ง€? ๋จผ์ € ๋น…์˜ค(Big O) ํ‘œ๊ธฐ๋ฒ•์„ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ. ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ด๊ฒฐ์— ์žˆ์–ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋‹ค์ˆ˜์ด๋‹ค. ์ •์ˆ˜ n์„ ๋ฐ›์œผ๋ฉด 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋‘ ๊ฐ€์ง€์˜ ์ฝ”๋“œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ function addUpTo(n) { let total = 0; for (let i = 1; i O(1), O(5n^2) => O(n^2) ๋“ฑ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 3-3 ๊ณ„์‚ฐ ๋ฐฉ๋ฒ• ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์—ฐ์‚ฐ์ด ๋ช‡ ..