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

๋ชฉ๋ก๋ถ€ํŠธ์บ ํ”„ (41)

๋‚˜์˜ ๋ชจ์–‘

026 | Greedy, Brute-Force, Binary Search Algorithm

๐Ÿ’™ Greedy Algorithm ์„ ํƒ์˜ ์ˆœ๊ฐ„๋งˆ๋‹ค ๋‹น์žฅ ๋ˆˆ์•ž์— ๋ณด์ด๋Š” ์ตœ์ ์˜ ์ƒํ™ฉ์œผ๋กœ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ ํƒ ์ ˆ์ฐจ(Selection Procedure): ํ˜„์žฌ ์ƒํƒœ์—์„œ์˜ ์ตœ์ ์˜ ํ•ด๋‹ต์„ ์„ ํƒ ์ ์ ˆ์„ฑ ๊ฒ€์‚ฌ(Feasibility Check): ์„ ํƒ๋œ ํ•ด๊ฐ€ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ ํ•ด๋‹ต ๊ฒ€์‚ฌ(Solution Check): ์›๋ž˜์˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ณ , ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์„ ํƒ ์ ˆ์ฐจ๋กœ ๋Œ์•„๊ฐ€ ์œ„์˜ ๊ณผ์ • ๋ฐ˜๋ณต ๐Ÿค ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์กฐ๊ฑด ํƒ์š•์  ์„ ํƒ ์†์„ฑ(Greedy Choice Property): ์•ž์˜ ์„ ํƒ์ด ์ดํ›„์˜ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(Optimal Substructure): ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€, ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์  ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑ ⇒ ํ•ญ์ƒ ์ตœ์ ์˜ ๊ฒฐ..

SEB/TIL 2022. 7. 29. 02:33
026 | Time Complexity

๐Ÿ’™ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ์ฐพ๋Š” ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€๋„ ์ค‘์š”ํ•˜๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์€ ๋ญ๊ฐ€ ์žˆ์„์ง€, ์ด๊ฒŒ ์ œ์ผ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋งž์„์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ฏผํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๐Ÿค ๊ฐœ๋… ์ž…๋ ฅ๊ฐ’์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ๋•Œ, ์—ฐ์‚ฐ ํšŸ์ˆ˜์— ๋น„ํ•ด ์–ผ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ = ์ž…๋ ฅ๊ฐ’์ด ์ปค์ง์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ์„ ์ตœ์†Œํ™”ํ•œ ๊ฒƒ ๐Ÿค ๋ถ„๋ฅ˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ(Worst Case): ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ, ๋น… ์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ• ์‚ฌ์šฉ ์ตœ์„ ์˜ ๊ฒฝ์šฐ(Best Case): ์ตœ์„ ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ, ๋น… ์˜ค๋ฉ”๊ฐ€(Big-Ω) ํ‘œ๊ธฐ๋ฒ• ์‚ฌ์šฉ ํ‰๊ท ์ ์ธ ๊ฒฝ์šฐ(Average Case): ํ‰๊ท  ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋น… ์„ธํƒ€(..

SEB/TIL 2022. 7. 28. 21:06
[DailyCoding] 06 | letterCapitalize

โœ๐Ÿป Description ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋Œ€๋ฌธ์ž์ธ ๋ฌธ์ž์—ด ๋ฆฌํ„ด ๐Ÿ“ Flow 1. ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๋ฅผ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๋‹ด์•„์ค„ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ - ๋‹จ์–ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ => .split(); 2. ๊ฒฐ๊ณผ๊ฐ’ ๋‹ด์„ ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ 3. ๋‹จ์–ด ์ˆœํšŒ => for - String.valueOf(), substring() 4. ๊ฐ ๋‹จ์–ด ์ฒซ๊ธ€์ž ๋Œ€๋ฌธ์ž => .toUpperCase() 5. ๋ฌธ์ž์—ด join 5. ๋ฌธ์ž์—ด ๋ฆฌํ„ด ๐Ÿคฏ Difficulty ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‹จ์–ด ์•ž์„ ๋Œ€๋ฌธ์ž๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ ๐Ÿช† Attempt ๋‹จ์–ด ๊ตฌ๋ถ„ → for๋ฌธ์—์„œ ๋ฌธ์ž์—ด ๋ฐ˜๋ณต → ์ฒซ ๊ธ€์ž ๋Œ€๋ฌธ์ž splitํ•œ ๋ฌธ์ž์—ด join ๐Ÿ“š TIL split() ๋ฆฌํ„ด: ๋ฌธ์ž์—ด → ๋ฌธ์ž์—ด ๋ฐฐ์—ด Parameters..

SEB/Daily Coding 2022. 7. 28. 20:53
024 | Data Structure - Tree, Graph

๐Ÿ’™ Tree ๐Ÿค ๊ฐœ๋… ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ ๋Œ€์ƒ ์ •๋ณด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ด€๋˜๋„๋ก ๊ตฌ์กฐํ™”์‹œํ‚ค๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊นŠ์ด (depth) ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด(depth)๋ฅผ ํ‘œํ˜„ ๋ ˆ๋ฒจ(Level) ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์˜ ๋ฌถ์Œ ํ˜•์ œ ๋…ธ๋“œ(Sibling Node): ๊ฐ™์€ ๋ ˆ๋ฒจ์— ๋‚˜๋ž€ํžˆ ์žˆ๋Š” ๋…ธ๋“œ ๋†’์ด(Height) ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด(height)๋ฅผ ํ‘œํ˜„ ๋ฆฌํ”„ ๋…ธ๋“œ์™€ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋†’์€ height ๊ฐ’์— +1ํ•œ ๊ฐ’์„ ๋†’์ด๋กœ ๊ฐ€์ง ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ์—๋Š” ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ 0์œผ๋กœ ๋†“์Œ ์„œ๋ธŒ ํŠธ๋ฆฌ(Sub tree) ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ root์—์„œ ๋ป—์–ด ๋‚˜์˜ค๋Š” ํฐ ํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€..

SEB/TIL 2022. 7. 26. 20:49