๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (110)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํ•œ ํ•œ๋ฐœ์ง ๋‘๋ฐœ์ง๐Ÿพ] ์„ ํ˜•ํƒ์ƒ‰

=> ๊ฐœ๋ฐœ์ž ํ•„์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ #2. ์„ ํ˜•ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ๐Ÿซง ์„ ํ˜•ํƒ์ƒ‰ : ๋ฐฐ์—ด/๋ฆฌ์ŠคํŠธ์—์„œ ์ฃผ์–ด์ง„ ์›์†Œ๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉ๋จ : ์ผ๋ ฌ๋กœ ๋œ ์ž๋ฃŒ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ํƒ์ƒ‰ : ์ฐพ๊ณ ์žํ•˜๋Š” ์›์†Œ๋ฅผ ์ฐพ์„ ๋•Œ ๊นŒ์ง€ or ๋ชจ๋“  ์›์†Œ์˜ ์ˆœํšŒ๊ฐ€ ๋๋‚  ๋•Œ ๊นŒ์ง€ ์ง„ 1) ๋ฐฐ์—ด ์ „์ฒด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœ์ฐจ์  ์ˆœํšŒ 2) ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์ฐพ๋Š” ์›์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ, ๋งŒ์•ฝ ์ฐพ๊ฒŒ ๋œ๋‹ค๋ฉด ์ˆœํšŒ ๋ฉˆ์ถ”๊ธฐ 3) ๋ชป ์ฐพ์„ ๊ฒฝ์šฐ, ๋‹ค์Œ ์›์†Œ๋กœ ๋„˜์–ด๊ฐ€๋ฉฐ ๋ฐ˜๋ณตํ•จ const nums = [10, 5, 2, 20, 7, 12, 33, 52] function linearSearch(arr: number[], val:number): boolean { for (let index = 0; index < arr.length; index ++) { const element =..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํ•œ ํ•œ๋ฐœ์ง ๋‘๋ฐœ์ง๐Ÿพ] ํˆฌ ํฌ์ธํ„ฐ ๊ธฐ๋ฒ•

=> ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•„์ˆ˜ ํ…Œํฌ๋‹‰, ํˆฌ ํฌ์ธํ„ฐ ๊ธฐ๋ฒ• ๐Ÿซง ํˆฌ ํฌ์ธํ„ฐ ํ…Œํฌ๋‹‰ : 1์ฐจ์› ๋ฐฐ์—ด์—์„œ ๊ฐ์ž ๋‹ค๋ฅธ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” 2๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉํ‘œ๊ฐ’ ๊ตฌํ•œ๋‹ค : ์™„์ „ ํƒ์ƒ‰ O(n) ์†”๋ฃจ์…˜ -> O(n) ์œผ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ฐ€๋Šฅ : ์—ฐ์†๋œ ๊ตฌ๊ฐ„์˜ ์›์†Œ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์›ํ•˜๊ฑฐ๋‚˜, ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ตฌํ•  ๋•Œ ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉ ๐Ÿพ ๋ฐฐ์—ด์—์„œ, ์›์†Œ๋“ค์˜ ํ•ฉ์ด x์ธ ์—ฐ์† ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ arr = [1, 3, 6, 5, 2, 7, 9], x = 9 result : {3, 6}, {2, 7}, {9} // ์™„์ „ ํƒ์ƒ‰ O(n^2) function cntSubArrSumOfX(arr, x) { let cnt = 0; for (let i = 0; i < arr.length; i ++) { let sum = 0; for ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํ•œ ํ•œ๋ฐœ์ง ๋‘๋ฐœ์ง๐Ÿพ] ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ (Linked List)

=> ๋น…์˜ค(Big-O)ํ‘œ๊ธฐ๋ฒ• ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ [10๋ถ„ ์ •๋ฆฌ] ๐Ÿซง ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ (Linked List) : ์—ฐ์†๋œ ๋…ธ๋“œ(Node) ์˜ ์—ฐ๊ฒฐ์ฒด ๐Ÿพ ๋…ธ๋“œ(Node) : ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ : ๋ฐ์ดํ„ฐ & ๋งํฌ, 2๊ฐ€์ง€์˜ ํ•„๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ ๐Ÿพ data : ๋…ธ๋“œ๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ/๊ฐ’ ๐Ÿพ next : ๋งํฌ/ํฌ์ธํ„ฐ ์—ญํ• , ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ (์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, prev ํฌ์ธํ„ฐ (์ด์ „ ๋…ธ๋“œ์˜ ์ฃผ์†Œ) ์ถ”๊ฐ€) ๐Ÿซง ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ (Linked List) vs ๋ฐฐ์—ด ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ (Linked List) ๋ฐฐ์—ด random access ๋ถˆ๊ฐ€๋Šฅ random access ๊ฐ€๋Šฅ ๋ฆฌ์ŠคํŠธ์˜ n๋ฒˆ์งธ ๋…ธ๋“œ ๋ฐฉ๋ฌธ์‹œ O(n) ์‹œ๊ฐ„ ์†Œ์š” ๋ฐฐ์—ด์˜ n๋ฒˆ์งธ ์›์†Œ ๋ฐฉ๋ฌธ์‹œ O(1) ์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋Šฅ ๋ฐฐ์—ด๋ณด๋‹ค ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๋…ธ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํ•œ ํ•œ๋ฐœ์ง ๋‘๋ฐœ์ง๐Ÿพ] ๋น…์˜ค(Big-O)ํ‘œ๊ธฐ๋ฒ•

=> ๋น…์˜ค(Big-O)ํ‘œ๊ธฐ๋ฒ• ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ [10๋ถ„ ์ •๋ฆฌ] ๐Ÿซง ๋น…์˜ค(Big-O)ํ‘œ๊ธฐ๋ฒ• : ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ๊ธฐ๋ฒ• : ์‹œ๊ฐ„ / ๊ณต๊ฐ„ ๋ณต์žก๋„ ์˜ˆ์ธก์‹œ ์‚ฌ์šฉ : N ๊ฐ’์˜ ์ฆ๊ฐ€์— ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋˜๋Š” ๊ณต๊ฐ„ ๊ณ„์‚ฐ : ์ƒ์ˆ˜์™€ ๊ณ„์ˆ˜ ์ œ๊ฑฐํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก๋„๋ฅผ ๋‹จ์ˆœํ™” : ์ธํ’‹์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€์œจ ๐Ÿซง ์ฃผ์š” ์‹œ๊ฐ„๋ณต์žก๋„ O(1) - Constant Time : ์ธํ’‹์˜ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์†Œ์š” O(log n) - Logarithmic : ๋กœ๊ทธ์‹œ๊ฐ„, O(1) ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n) - Linear Time : ์„ ํ˜• ์‹œ๊ฐ„, ์ธํ’‹์˜ ์ฆ๊ฐ€ ์‹œ ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ O(N^2) - Quadratic : 2์ฐจ ์‹œ๊ฐ„, ์ธํ’‹์˜ ์ฆ๊ฐ€ ์‹œ n์˜ ์ œ๊ณฑ ๋น„์œจ๋กœ ์ฆ๊ฐ€ O(n!) - Factoria..