๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐Ÿ“š Language & CS knowledge/Algorithm & Data structure (21)

Daehyunii's Dev-blog

05 ์žฌ๊ท€

5.1 ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์šฐ์„  ์žฌ๊ท€๋ผ๋Š”๊ฒƒ์ด ๋ฌด์—‡์ผ๊นŒ? ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ๊ณต๋ถ€ํ–ˆ๋“ฏ์ด ์žฌ๊ท€๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์žฌ๊ท€๋ฅผ ์™œ ์•Œ์•„์•ผ ํ• ๊นŒ? ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋ชจ๋“  ๊ณณ์—์„œ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์šฐ์„  ์žฌ๊ท€๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” '์‹คํ–‰์ปจํ…์ŠคํŠธ ์Šคํƒ'์„ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ด๋ฏธ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ณต๋ถ€ํ•œ์ ์ด ์žˆ๋‹ค. 2022.07.20 - [์–ธ์–ด ๊ณต๋ถ€ ๋ฐ ์ •๋ฆฌ/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ[๋ชจ๋˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ]] - 23์žฅ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ 23์žฅ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค. ์ด ๊ฐœ๋…์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šค์ฝ”ํ”„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ˜ธ pinetree93.tistory.com..

04 ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒจํ„ด

4.1 ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด๋“ค ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ‘๊ทผ๋ฒ•์— ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์œผ๋กœ ์ด์ œ๋Š” ๋•Œ๋•Œ๋กœ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์„ ์‚ดํŽด๋ณด๋ ค ํ•œ๋‹ค. ๊ต‰์žฅํžˆ ๋งŽ์€ ํŒจํ„ด๋“ค์ด ์กด์žฌํ•˜์ง€๋งŒ ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด๋“ค๋งŒ ์‚ดํŽด๋ณด์ž.(๊ณต์‹์ ์ธ ์ด๋ฆ„์ด ๋ถ™์€ ํŒจํ„ด๋“ค๋„ ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์€ ํŒจํ„ด๋“ค๋„ ์กด์žฌํ•œ๋‹ค.) 1. Frequency Counter ๋นˆ๋„์ˆ˜ ์„ธ๊ธฐ ํŒจํ„ด (๊ฐ•์‚ฌ๋‹˜์ด ์ง์ ‘ ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค) 2. Multiple Pointers ๋‹ค์ค‘ ํฌ์ธํ„ฐ ํŒจํ„ด (๊ฐ•์‚ฌ๋‹˜์ด ์ง์ ‘ ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค) 3. Sliding Window ๊ธฐ์ค€์  ๊ฐ„ ์ด๋™ ๋ฐฐ์—ด ํŒจํ„ด 4. Divide and Conquer ๋ถ„ํ• ๊ณผ ์ •๋ณต ํŒจํ„ด (๊ณต์‹์ ์ธ ์ด๋ฆ„์ด๋‹ค. ์‹ค์ œ ์ž์ฃผ ์‚ฌ์šฉ๋จ) 5. Greedy Algorithms ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด (์‹ค์ œ ์ž์ฃผ ์‚ฌ์šฉ๋จ) ์ด ์ฒ˜๋Ÿผ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์œ ์šฉ..

03 ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ‘๊ทผ๋ฐฉ๋ฒ•

3.1 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ํŠน์ • ์ž‘์—…์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด๋‚˜ ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ทธ ๋ฐฉ๋ฒ•์—๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์™œ ์•Œ์•„์•ผ ํ• ๊นŒ? ๋ฐ”๋กœ ์ •์˜๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ๋งˆ๋ จํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?? ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ง๊ด€์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ , ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ์ข‹์„๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ •๋ง ๋ถ€๋Ÿฌ์šธ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ จ์˜ ์ „๋žต์„ ๊ตฌ์‚ฌํ•˜์—ฌ ์ ‘๊ทผํ•˜๋Š”๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•œ ์ „๋žต์  ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋‹จ๊ณ„ : ๋ฌธ์ œ์˜ ์ดํ•ด 2๋‹จ๊ณ„ : ๊ตฌ์ฒด์  ์˜ˆ์ œ ์ฐพ๊ธฐ 3๋‹จ๊ณ„..

02 ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€

์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” ๋น…์˜ค์˜ ์‹œ์ ์—์„œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š”์ง€, ์™œ ๋ฐฐ์—ด์˜ ์•ž์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฒƒ์ด ์•ˆ์ข‹์€ ๊ฒƒ์ธ์ง€, ๋˜ ๋ฉ”์„œ๋“œ๋“ค์€ ๋น…์˜ค์˜ ๊ด€์ ์—์„œ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์•˜๋‹ค. 2.1 ๊ฐ์ฒด์˜ ๋น…์˜ค let instructor = { firstName : "mark", inInstructor : true, favoriteNumbers : [1,2,3,4,5] }; ์šฐ์„  ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ํ•„์š”๊ฐ€ ์—†์„๋•Œ, ๋น ๋ฅธ ์ ‘๊ทผ, ์ž…๋ ฅ ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฑฐ๋ฅผ ์›ํ•  ๋•Œ ์ข‹๋‹ค. ํ•œ๋งˆ๋””๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ ๊ทธ ์™ธ์˜ ๊ฒƒ๋“ค์€ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค. ์ด๋ฅผ ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ๊ด€์ ์—์„œ๋Š” ์ž…๋ ฅ,์ œ๊ฑฐ,์ ‘๊ทผ์€ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฆ‰ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ์–ด๋–ค ์ •๋ณด๋“  ์ƒ์ˆ˜ ์‹œ๊ฐ„์•ˆ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ƒ..

01 ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•(Big O)

1.1 ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ํ•„์š”์„ฑ ๋™์ผํ•œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ์ˆ˜๋งŽ์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋งŽ์€ ์ฝ”๋“œ๋“ค ์ค‘์—์„œ ์ƒํ™ฉ์— ์•Œ๋งž๋Š” ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์€ ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค. ๋™์ผํ•œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์€ ๊ทธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•๋งˆ๋‹ค ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š” ์ด๋ฅผ ๋น„๊ตํ•ด๋ณด๊ณ  ํ™•์ธํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””๋ฒ„๊ทธ์‹œ ์ฝ”๋“œ๋ฅผ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๋Š”๊ฒƒ๋„ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค. 1.2 ์ฝ”๋“œ ์‹œ๊ฐ„ ์žฌ๊ธฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•จ์— ์žˆ์–ด์„œ ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์€ ๋ฌด์—‡์ผ๊นŒ? ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ์ง€? ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€? ์•„๋‹ˆ๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ข‹์€ ์ฝ”๋“œ? ์ด ์ฒ˜๋Ÿผ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ์ค€์€..