# ๐Ÿ“Œ ๊ด€ํ†ตํ”„๋กœ์ ํŠธ: HappyHouse_Algo_์„œ์šธ_08๋ฐ˜_๊น€์ •์œค_๊น€์ง€์› ### ์ œ์ถœ์ผ: 2021.03.19 ### ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ ์ฐธ์—ฌ ํŽ˜์–ด - ๊น€์ง€์›, ๊น€์ •์œค ### ๐Ÿ“Œ ์ฒ˜๋ฆฌ๋œ ์š”๊ตฌ์‚ฌํ•ญ ๋ชฉ๋ก |๋‚œ์ด๋„|๊ตฌํ˜„๊ธฐ๋Šฅ|์„ธ๋ถ€|์ž‘์„ฑ์—ฌ๋ถ€(O/X)|๋‚ด์šฉ| |:---:|---|---|---|:---:| |๊ธฐ๋ณธ|์•Œ๊ณ ๋ฆฌ์ฆ˜ 1|Merge Sort|O|๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ธฐ๋Šฅ| |๊ธฐ๋ณธ|์•Œ๊ณ ๋ฆฌ์ฆ˜ 2|ํ‰๊ท  ํ•„ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜|O|๊ฑฐ๋ž˜ ์‹œ์„ธ ํ‰๊ท ์„ ๊ณ„์‚ฐ| |๊ธฐ๋ณธ|์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 3|Hash Algorithm|O|ํ•ด๋‹น ์•„ํŒŒํŠธ์— ์ฃผ๋ณ€ ์ƒ๊ถŒ(ํŽธ์˜์‹œ์„ค) & ํ™˜๊ฒฝ์ •๋ณด ์ €์žฅ| |๊ธฐ๋ณธ|์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 4|KMP Algorithm|O|๊ฒ€์ƒ‰ bar์— ์ž…๋ ฅํ•œ keyWord๋กœ ์ „์ฒด contents ๊ฒ€์ƒ‰| |๊ธฐ๋ณธ|์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 5|CBF Algoritm|O|์ฐœ ๋‚ด์—ญ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋งค๋ฌผ ์ถ”์ฒœ ๊ธฐ๋Šฅ| |๊ธฐ๋ณธ|์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 6|Quick Sort|O|๋ฉ”์ธ ํŽ˜์ด์ง€ ์ฐจํŠธ ๊ตฌํ˜„| |์ถ”๊ฐ€|ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ||O|| |์‹ฌํ™”|ํ”„๋กœ์ ํŠธ ํ™”๋ฉด ์„ค๊ณ„์„œ||O|| <span style="color:red"> * ์ž‘์„ฑ๋œ ๊ธฐ๋Šฅ์€ ๋ฐ˜๋“œ์‹œ ์บก์ณ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(GUI ์‹คํ–‰ํ™”๋ฉด, ์ฝ˜์†” ์ถœ๋ ฅ ๋“ฑ)<br> * ์ถ”๊ฐ€๋กœ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์„ ํ‘œ์— ์ถ”๊ฐ€์‹œํ‚ค์„ธ์š”. </span> ## ๐Ÿ“‘ 1. ๊ฒ€์ƒ‰ ์ •๋ณด ์ •๋ ฌ๊ธฐ๋Šฅ (Merge Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜) ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ์ง€์—ญ๋ณ„ ๋งค๋ฌผ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ 2. ์•„ํŒŒํŠธ๋ณ„ ๋งค๋ฌผ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ๊ฑฐ๋ž˜ ๋งค๋ฌผ ๊ฒฐ๊ณผ ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•จ โ†’ ๊ธฐ๋ณธ : ์ตœ์‹ ์ˆœ (๊ฑฐ๋ž˜ ๋‚ ์งœ๋ณ„๋กœ ์ •๋ ฌ) โ†’ ์ง€์—ญ๋ณ„ / ์•„ํŒŒํŠธ๋ณ„ ๊ณตํ†ต ์ •๋ ฌ ๊ธฐ๋Šฅ : ๊ฑฐ๋ฆฌ์ˆœ, ์‹œ์„ธ์ˆœ โ†’ ์•„ํŒŒํŠธ๋ณ„ ์ƒ์„ธ ์ •๋ณด ์ •๋ ฌ ๊ธฐ๋Šฅ : ๋ฉด์ ์ˆœ, ์ธต์ˆ˜ ์ˆœ, ํ™˜๊ฒฝ ์šฐ์ˆ˜ ์ˆœ, ์ƒ๊ถŒ ์šฐ์ˆ˜ ์ˆœ - ๊ธฐ๋ณธ์œผ๋กœ ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฑฐ๋ฆฌ์ˆœ, ์‹œ์„ธ์ˆœ์œผ๋กœ ๊ฒ€์ƒ‰ ์‹œ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์€ ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ๊ตฌํ˜„ ### โ‰๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„๋‹จ ์„ค๋ช… - ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— Reference Type์ธ String ๊ฐ์ฒด์ด๋ฏ€๋กœ Merge Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ๋‚ ์งœ ๋ณ„, ๊ฑฐ๋ฆฌ๋ณ„, ์‹œ์„ธ๋ณ„๋กœ ์ •๋ ฌํ•œ๋‹ค. - ํ€ต ์ •๋ ฌ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์›๋ณธ ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์”ฉ ๋ถ„ํ• ํ•ด๊ฐ€๋ฉด์„œ ์ •๋ ฌํ•˜๋Š” ์ •๋ ฌ๋ฒ• - ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(NxLog(N)) ~~~ ์žฅ๋‹จ์  - ์žฅ์  : ํ€ต ์ •๋ ฌ๊ณผ ๋‹ฌ๋ฆฌ ๊ธฐ์ค€๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ • ์—†์ด ๋ฌด์กฐ๊ฑด ์ ˆ๋ฐ˜์œผ๋กœ ๋ถ„ํ• ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ค€๊ฐ’์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ ๋”ฐ๋ผ์„œ ํ•ญ์ƒ O(NxLog(N)) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง - ๋‹จ์  : ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ์ž„์‹œ ๋ฐฐ์—ด์— ์›๋ณธ ๋งต์„ ๊ณ„์†ํ•ด์„œ ์˜ฎ๊ฒจ์ฃผ๋ฉฐ ์ •๋ ฌ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ•„์š” ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ ๋ณ‘ํ•ฉ์ •๋ ฌ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•จ ~~~ ## ๐Ÿ“‘ 2. ๊ฑฐ๋ž˜ ์‹œ์„ธ ํ‰๊ท  ๊ณ„์‚ฐ (ํ‰๊ท  ํ•„ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ์ „๊ตญ ๋งค๋งค๊ฐ€ ๋™ํ–ฅ 2. ์ง€์—ญ๋ณ„ ํ‰๊ท  ๋งค๋งค๊ฐ€ ์ˆœ์œ„ 3. ์ง€์—ญ๋ณ„ ๋งค๋ฌผ์—์„œ ์•„ํŒŒํŠธ๋ณ„ ํ‰๊ท  ๋งค๋งค๊ฐ€ ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ์ง€์—ญ๋ณ„ ์•„ํŒŒํŠธ ์ •๋ณด์˜ ์‹œ์„ธ๋Š” ํ•ด๋‹น ์•„ํŒŒํŠธ์˜ ์ „์ฒด ๊ฑฐ๋ž˜๊ฐ€์˜ ํ‰๊ท ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ - ์ง€์—ญ๋ณ„ ๊ฐ ์•„ํŒŒํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ๊ฑฐ๋ž˜ ๊ฐ€๊ฒฉ์„ ๋”ํ•œ ํ›„ ํ•ด๋‹น ๊ฐฏ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด ํ‰๊ท  ๊ฑฐ๋ž˜๊ฐ€๊ฒฉ์„ ์•„๋ž˜ ๋งค๋งค๊ฐ€ ์œ„์น˜์— ํ‘œ์‹œ - ์ „๊ตญ ๊ฑฐ๋ž˜๋™ํ–ฅ ์ฐจํŠธ ๊ตฌํ˜„์‹œ ์ „๊ตญ ์•„ํŒŒํŠธ ๊ฑฐ๋ž˜ ๋™ํ–ฅ์„ ๊ฐ ๋‚ ์งœ๋ณ„ (์›”, ๋…„๋„) ํ‰๊ท ์„ ๊ตฌํ•œ ํ›„ ์ฐจํŠธ์— ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•จ - ์ง€์—ญ๋ณ„ ๊ฑฐ๋ž˜๋™ํ–ฅ ์ฐจํŠธ ๊ตฌํ˜„์‹œ ๊ฐ ์ง€์—ญ์˜ ์•„ํŒŒํŠธ ๊ฑฐ๋ž˜ ๋™ํ–ฅ์˜ ํ‰๊ท ์„ ๊ตฌํ•ด ์ฐจํŠธ์— ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•จ ![Untitled](https://user-images.githubusercontent.com/48318620/111730425-bb222500-88b4-11eb-8d31-3d0656d35c48.png) ### โ‰๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„๋‹จ ์„ค๋ช… - n ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ ์…‹์˜ ํ‰๊ท ์„ ๊ตฌํ•  ๋•Œ n-1 ๊นŒ์ง€์˜ ํ‰๊ท ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด์ „์— ๊ตฌํ•œ ํ‰๊ท ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ „์ฒด ํ‰๊ท  ์žฌ๊ณ„์‚ฐ - ์ฆ‰, for๋ฌธ์„ ๊ณ„์†ํ•ด์„œ ๋Œ๋ ค์„œ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ํ•ฉ์„ ๊ตฌํ•œ ํ›„ ๊ทธ ํ•ฉ์„ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š์Œ ~~~ ์žฅ๋‹จ์  - ์žฅ์  : ๊ธฐ์กด์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๊ณ„์‚ฐ์„ ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N) ์ด์—ˆ๋Š”๋ฐ ํ‰๊ท  ํ•„ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋„ ์ผ์ •ํ•˜๊ฒŒ O(1) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง -> ๋งค์šฐ ๋น ๋ฅธ ์—ฐ์‚ฐ - ๋‹จ์  : ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์ดํ•ดํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ๊ณ  ๊ณ„์‚ฐ์‹์ด ๋ณต์žกํ•จ ~~~ ## ๐Ÿ“‘ 3. ์ƒํ™œํŽธ์˜์ง€์ˆ˜/ํ™˜๊ฒฝ์˜ค์—ผ์ง€์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ (HashMap) ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ๊ด€์‹ฌ์ง€์—ญ ํ™˜๊ฒฝ์˜ค์—ผ์ง€์ˆ˜ ๊ณ„์‚ฐ 2. ๊ด€์‹ฌ์ง€์—ญ ์ƒํ™œํŽธ์˜์ง€์ˆ˜ ๊ณ„์‚ฐ ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ๊ด€์‹ฌ์ง€์—ญ์˜ ์ƒํ™œํŽธ์˜์ง€์ˆ˜์™€ ํ™˜๊ฒฝ์˜ค์—ผ์ง€์ˆ˜๋ฅผ ์ˆ˜์น˜ํ™”ํ•˜๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž๋“ค์ด ํ•œ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ - ex) ์ƒํ™œ ์ ์ˆ˜ : ๋งˆํŠธ 1๊ฐœ๋‹น +1, ํ•™์› 1๊ฐœ๋‹น +1, ์นดํŽ˜ 1๊ฐœ๋‹น +1 - ex) ๋Œ€๊ธฐ ์˜ค์—ผ ์ ์ˆ˜ : ๋Œ€๊ธฐ์˜ค์—ผ๊ธฐ์—… 1๊ฐœ๋‹น -5 .... ### โ‰๏ธ HashMap ๊ฐ„๋‹จ ์„ค๋ช… - HashMap์€ Key, Value๋ฅผ ์ €์žฅํ•˜๋Š” Map์˜ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. - ์ž๋ฃŒ๊ตฌ์กฐ์— Key๋ฅผ ๋„ฃ์œผ๋ฉด Value๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. - HashMap์€ Key๋ฅผ Hashing ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ HashMap์ด๋ž€ ์ž…๋ ฅ๊ณผ ์‚ญ์ œ์— ๋Œ€ํ•ด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ž…๋‹ˆ๋‹ค. ~~~ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋Š” ๊ฐ€์ •์„ ํ–ˆ์„ ๋•Œ ("์›์ฒœ๋™", "๋Œ€๊ธฐ์˜ค์—ผ์—…์ฒด") ("์›์ฒœ๋™", "์ˆ˜์งˆ์˜ค์—ผ์—…์ฒด") ("์›์ฒœ๋™", "๋Œ€๊ธฐ์˜ค์—ผ์—…์ฒด") ("์›์ฒœ๋™", "๋งˆํŠธ") ("์›์ฒœ๋™", "๋งˆํŠธ") ("์›์ฒœ๋™", "ํŽธ์˜์ ") 2์ค‘ HashMap์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ '์›์ฒœ๋™'์ด๋ผ๋Š” key๋ฅผ ๊ฐ€์ง€๋Š” 2์ค‘ HashMap์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. { ์›์ฒœ๋™ = { ๋Œ€๊ธฐ์˜ค์—ผ์—…์ฒด = 2, ์ˆ˜์งˆ์˜ค์—ผ์—…์ฒด = 1, ๋งˆํŠธ = 2, ํŽธ์˜์  = 1 } } ~~~ ~~~ ์žฅ๋‹จ์  - ์žฅ์  : Open Addressing์ด ์•„๋‹Œ Seperate Chaining ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€,์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜๋ฉฐ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. - ๋‹จ์  : ํ˜„์žฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Key์— ๋Œ€ํ•ด์„œ ๋ฏธ๋ฆฌ Memory๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ~~~ ## ๐Ÿ“‘ 4. ์ „์ฒด ๊ฒ€์ƒ‰์ฐฝ (KMP Algorithm) ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ๋ฉ”์ธ ํ™”๋ฉด ์ƒ๋‹จ ๊ฒ€์ƒ‰ Bar ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ํ™ˆํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋“ค์˜ Link๋ฅผ ๊ฒฐ๊ณผํŽ˜์ด์ง€์˜ List๋กœ ๋ณด์—ฌ์คŒ - ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ๋กœ ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ •๋ณด๋“ค์„ ์ „๋ถ€ ๋ฝ‘์•„์˜ค๊ณ  ๊ธฐ์ค€ ๋ณ„๋กœ ๊ฐ ํ…Œ๋งˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ฆผ โ†’ ๊ธฐ์ค€์€ ๊ฐ ํ…Œ๋งˆ์˜ DB ํ…Œ์ด๋ธ” ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ง€์—ญ๋ณ„ ํ…Œ๋งˆ์—๋Š” region ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋กœ ์ฐพ์€ ์ •๋ณด๋ฅผ ๋ฟŒ๋ฆฌ๊ณ , ์•„ํŒŒํŠธ๋ณ„ ํ…Œ๋งˆ์—๋Š” brand ํ…Œ์ด๋ธ”์—์„œ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•œ ์ •๋ณด๋ฅผ ๋ฟŒ๋ฆฌ๊ณ , ๊ณต์ง€์‚ฌํ•ญ ํ…Œ๋งˆ๋Š” notice ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด์šฉ ![Untitled1](https://user-images.githubusercontent.com/48318620/111730457-d2f9a900-88b4-11eb-8515-04a97d1a121e.png) ### KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„๋‹จ ์„ค๋ช… - KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N+M)์œผ๋กœ ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง - KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํƒ์ƒ‰์‹œ ๋งค ์œ„์น˜๋งˆ๋‹ค ์ƒˆ๋กœ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ด์ „ ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉ ~~~ ์žฅ๋‹จ์  - ์žฅ์  : KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ถˆ์ผ์น˜๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ ๋‹ค์Œ์œผ๋กœ ๋น„๊ตํ•  ์œ„์น˜๋ฅผ ๋นจ๋ฆฌ ์ฐพ์•„๋‚ด๊ณ  ์ด์ „ ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ๊ฐ€๋Šฅ - ๋‹จ์  : ์•ŒํŒŒ๋ฒณ์˜ ์ˆ˜๊ฐ€ ์ปค์ง€๋ฉด Brute Force ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋น„ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ์ผ์–ด๋‚œ๋‹ค. ~~~ ## ๐Ÿ“‘ 5. ๋งค๋ฌผ ์ถ”์ฒœ ๊ธฐ๋Šฅ (CBF ์•Œ๊ณ ๋ฆฌ์ฆ˜) - ๊ด€์‹ฌ ์ง€์—ญ ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ์ฐœ ๋งค๋ฌผ๊ณผ ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€ ๋งค๋ฌผ์„ ์ถ”์ฒœํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ์‚ฌ์šฉ์ž๊ฐ€ ์ฐœํ•œ ๋งค๋ฌผ๊ณผ ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€ ๋งค๋ฌผ์„ ์ถ”์ฒœํ•ด์คŒ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์œ ์šฉํ•˜๊ณ  ๋งŽ์€ ์ •๋ณด ์ œ๊ณต์„ ์œ„ํ•จ ### โ‰๏ธ CBF ๊ฐ„๋‹จ ์„ค๋ช… - CBF๋Š” Content Based Filder์˜ ์•ฝ์ž๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์€ ๋ฐ์ดํ„ฐ์™€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์˜ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ~~~ ์žฅ๋‹จ์  - ์žฅ์  : ์ƒˆ๋กœ์šด ์ƒํ’ˆ์„ ์ถ”์ฒœํ•˜์ง€ ๋ชปํ•˜๋Š” First-Rate ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. - ๋‹จ์  : ์ƒˆ๋กœ์šด ์žฅ๋ฅด์˜ ์ถ”์ฒœ์ด ์–ด๋ ต๋‹ค. ~~~ ## ๐Ÿ“‘ ๊ฑฐ๋ž˜ ์ •๋ณด ์ฐจํŠธํ™” ๊ธฐ๋Šฅ (Quick Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜) ### ๐Ÿ’ฌ ์ ์šฉ ๋ถ€๋ถ„ 1. ๋ฉ”์ธํ™”๋ฉด ํ•˜๋‹จ์˜ ์ง€์—ญ๋ณ„ ํ‰๊ท  ๋งค๋งค๊ฐ€ ์ˆœ์œ„ ์ฐจํŠธ ### โœ๏ธ ๊ตฌํ˜„ ๋ชฉ์  - ๊ฐ ์ง€์—ญ์˜ ๋งค๋งค๊ฐ€ ํ‰๊ท ์„ ๊ตฌํ•œ ๋’ค ํ•ด๋‹น ํ‰๊ท ๊ฐ’์„ ์ •๋ ฌํ•˜์—ฌ ๋†’์€ ํ‰๊ท ๊ฐ€๋ฅผ ๊ฐ€์ง€๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ <img width="571" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 2 59 43" src="https://user-images.githubusercontent.com/48318620/111737956-dba5ab80-88c3-11eb-9708-d7bdc74a716d.png"> ### โ‰๏ธ Quick Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„๋‹จ ์„ค๋ช… - ๋ถˆ์•ˆ์ • ์ •๋ ฌ์— ์†ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์›์†Œ์™€์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„๊ต ์ •๋ ฌ - ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜๋กœ, ํ‰๊ท ์ ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ์ˆ˜ํ–‰ ์†๋„๋ฅผ ์ž๋ž‘ - ๋ณ‘ํ•ฉ ์ •๋ ฌ๊ณผ ๋‹ฌ๋ฆฌ ํ€ต ์ •๋ ฌ์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋น„๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํ•  ํ•จ ~~~ ์žฅ๋‹จ์  - ์žฅ์  : ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(NxlogN)์„ ๊ฐ€์ง€๋Š” ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ๋„ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค. ๋ณ‘ํ•ฉ์ •๋ ฌ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค. - ๋‹จ์  : ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ๋Š” ํ€ต์ •๋ ฌ์˜ ๋ถˆ๊ท ํ˜• ๋ถ„ํ• ์— ์˜ํ•ด ์˜คํžˆ๋ ค ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋” ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค. ~~~ # ๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ํ™”๋ฉด ์„ค๊ณ„์„œ (PDF ์ฒจ๋ถ€) ### ๐ŸŽฅ ์‚ฌ์ง„ ์ฒจ๋ถ€ <img width="1660" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 1 39 44" src="https://user-images.githubusercontent.com/48318620/111738695-270c8980-88c5-11eb-9183-5099bc5675f5.png"> <img width="1634" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 1 40 01" src="https://user-images.githubusercontent.com/48318620/111738756-41466780-88c5-11eb-854b-2ca298608ca2.png"> <img width="1741" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 1 40 11" src="https://user-images.githubusercontent.com/48318620/111738794-502d1a00-88c5-11eb-88b1-f299d953851c.png"> <img width="1621" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 3 09 01" src="https://user-images.githubusercontent.com/48318620/111738822-5d4a0900-88c5-11eb-8f75-718b7e2f823c.png"> <img width="1772" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 3 09 11" src="https://user-images.githubusercontent.com/48318620/111738858-6935cb00-88c5-11eb-9df3-21f34d14bb9a.png"> <img width="1644" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 3 09 18" src="https://user-images.githubusercontent.com/48318620/111738871-72bf3300-88c5-11eb-8017-5859482be939.png"> <img width="1769" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 3 09 26" src="https://user-images.githubusercontent.com/48318620/111738904-7ce13180-88c5-11eb-9881-897ee0f25bc6.png"> <img width="1769" alt="แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-19 แ„‹แ…ฉแ„’แ…ฎ 3 09 35" src="https://user-images.githubusercontent.com/48318620/111738934-87033000-88c5-11eb-879a-59d12744e0c5.png"> # ๐Ÿ“Œ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ |์ˆœ๋ฒˆ|์š”๊ตฌ์‚ฌํ•ญ๋ช…|์š”๊ตฌ์‚ฌํ•ญ ์ƒ์„ธ|์šฐ์„ ์ˆœ์œ„| |:---:|---|---|---|:---:| ||๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ| |F01|์ฃผํƒ ์‹ค๊ฑฐ๋ž˜๊ฐ€ ์ •๋ณด ์ˆ˜์ง‘|๊ตญํ† ๊ตํ†ต๋ถ€ ์‹ค๊ฑฐ๋ž˜๊ฐ€ ์ •๋ณด ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ํ›„ DB ์ €์žฅ|ํ•„์ˆ˜| |F02|์ฃผํƒ ์‹ค๊ฑฐ๋ž˜๊ฐ€ ๊ฒ€์ƒ‰|์ฃผํƒ ์‹ค๊ฑฐ๋ž˜๊ฐ€ ์ •๋ณด๋ฅผ ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ์ •๋ณด์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์ œ๊ณต|ํ•„์ˆ˜| |F03|์ฐœ ๋งค๋ฌผ ๊ด€๋ฆฌ|๊ด€์‹ฌ๋งค๋ฌผ์„ ์ฐœํ•˜์—ฌ ์–ธ์ œ๋“  ํ•ด๋‹น ๋งค๋ฌผ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ์œ ์‚ฌ๋งค๋ฌผ ์ถ”์ฒœ|์ถ”๊ฐ€| |F04|์ฃผ๋ณ€ ์ •๋ณด ์ˆ˜์ง‘|๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ์—์„œ ์ƒ๊ถŒ์ •๋ณด, ํ™˜๊ฒฝ์ •๋ณด ๋ฐ์ดํ„ฐ ํ™œ์šฉ์„ ์œ„ํ•ด DB์ €์žฅ|์ถ”๊ฐ€| |F05|์ฃผ๋ณ€ ์ •๋ณด ํ™œ์šฉ|์ƒ๊ถŒ์ •๋ณด, ํ™˜๊ฒฝ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฐœ ๋งค๋ฌผ์ด ์œ„์น˜ํ•œ ์ง€์—ญ์˜ ํ™˜๊ฒฝ์˜ค์—ผ์ง€์ˆ˜, ์ƒํ™œํŽธ์˜์ง€์ˆ˜ ์ œ๊ณต|์ถ”๊ฐ€| ||๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ| |NF01|๊ณต๊ณต๋ฐ์ดํ„ฐ ์ •ํ™•์„ฑ|๊ณต๊ณต๋ฐ์ดํ„ฐ API๋ฅผ ํ™œ์šฉํ•จ์œผ๋กœ ์ธํ•œ ๊ณต๊ณต๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ์ด ์š”๊ตฌ๋จ|| |NF02|๊ฐ€์šฉ์„ฑ|์–ธ์ œ๋‚˜(์–ด๋–ค ๋””๋ฐ”์ด์Šค๋กœ๋“ ) ์„œ๋น„์Šค ๊ฐ€๋Šฅํ•ด์•ผํ•จ|| |NF03|์‘๋‹ต์„ฑ|๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•ด์•ผํ•จ|| |NF04|์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ|์›น ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ง€์‹์ด ์—†์–ด๋„ ์‚ฌ์šฉ์ด ํŽธํ•ด์•ผํ•จ|| |NF05|๊ฐ€๊ณต์ •๋ณด ์ •ํ™•์„ฑ|์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๊ณตํ•œ ์ •๋ณด์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋จ||