Algorithm ๐Ÿค–

ยทAlgorithm ๐Ÿค–
๐ŸŒŸ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / Level2 / ํ˜ธํ…” ๋Œ€์‹ค ๐Ÿ“ƒ ๋ฌธ์ œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ 1 ≤ book_time์˜ ๊ธธ์ด ≤ 1,000 book_time[i]๋Š” ["HH:MM", "HH:MM"]์˜ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค [๋Œ€์‹ค ์‹œ์ž‘ ์‹œ๊ฐ, ๋Œ€์‹ค ์ข…๋ฃŒ ์‹œ๊ฐ] ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ์€ HH:MM ํ˜•ํƒœ๋กœ 24์‹œ๊ฐ„ ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฅด๋ฉฐ, "00:00" ๋ถ€ํ„ฐ "23:59" ๊นŒ์ง€๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ์•ฝ ์‹œ๊ฐ์ด ์ž์ •์„ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ์€ ํ•ญ์ƒ ์ข…๋ฃŒ ์‹œ๊ฐ๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. ๐Ÿ‘€ ์ž…์ถœ๋ ฅ ์˜ˆ ๐Ÿค” ํ’€์ด ๋ฐฉ๋ฒ• 1๏ธโƒฃ ์•„์ด๋””์–ด โžก๏ธ ๋Œ€์‹ค ์‹œ์ž‘ ์‹œ๊ฐ„..
ยทAlgorithm ๐Ÿค–
๐ŸŒŸ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / Level3 / ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ ๐Ÿ“ƒ ๋ฌธ์ œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ ์„ฌ์˜ ๊ฐœ์ˆ˜ n์€ 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค. costs์˜ ๊ธธ์ด๋Š” ((n-1) * n) / 2์ดํ•˜์ž…๋‹ˆ๋‹ค. ์ž„์˜์˜ i์— ๋Œ€ํ•ด, costs[i][0] ์™€ costs[i] [1]์—๋Š” ๋‹ค๋ฆฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๋‘ ์„ฌ์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด์žˆ๊ณ , costs[i] [2]์—๋Š” ์ด ๋‘ ์„ฌ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•  ๋•Œ ๋“œ๋Š” ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ์—ฐ๊ฒฐ์€ ๋‘ ๋ฒˆ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋”๋ผ๋„ ๊ฐ™์€ ์—ฐ๊ฒฐ๋กœ ๋ด…๋‹ˆ๋‹ค. ์ฆ‰ 0๊ณผ 1 ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋น„์šฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๊ณผ ..
ยทAlgorithm ๐Ÿค–
๐ŸŒŸ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / Level2 / ํ•˜๋…ธ์ด์˜ ํƒ‘ ๐Ÿ“ƒ ๋ฌธ์ œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ n์€ 15์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ๐Ÿ‘€ ์ž…์ถœ๋ ฅ ์˜ˆ n result 2 [ [1,2], [1,3], [2,3] ] ๐Ÿค” ํ’€์ด ๋ฐฉ๋ฒ• 1๏ธโƒฃ ํƒ‘ ์ด๋™ ๊ทœ์น™ ํŒŒ์•… ํ•˜๊ธฐ โžก๏ธ ํƒ‘์„ ์ด๋™์‹œํ‚ค๋Š” ๊ณผ์ •์„ ์•„๋ž˜ 3๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด๋ณด์•˜๋‹ค. โ‘  ๊ฐ€์žฅ ํฐ ์›ํŒ ์™ธ ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์˜ฎ๊ธด๋‹ค. โ‘ก ๊ฐ€์žฅ ํฐ ์›ํŒ์„ 3๋ฒˆ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ธด๋‹ค. โ‘ข ๊ณผ์ • โ‘  ์—์„œ ์˜ฎ๊ฒจ๋‘์—ˆ๋˜ ์›ํŒ๋“ค์„ 3๋ฒˆ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ธด๋‹ค. โžก๏ธ ๋˜ ๋ช‡๊ฐœ๋ฅผ ๋‚˜์—ดํ•ด๋ณด๋‹ˆ ์š”๊ตฌ๋˜๋Š” ์ด๋™ ์ˆ˜๊ฐ€ 2์˜ n์ œ๊ณฑ ๋“ฑ๋น„์ˆ˜์—ด์˜ ํ•ฉ ํ˜•..
ยทAlgorithm ๐Ÿค–
โ“๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ โžก๏ธ ๋‹ค์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ์ฃผ์ œ์ธ ์ด๋ถ„ ํƒ์ƒ‰์— ๋Œ€ํ•ด์„œ ์˜ˆ์Šต โ—๏ธ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ 1๏ธโƒฃ ์ด๋ถ„ํƒ์ƒ‰์ด๋ž€? โžก๏ธ ์ˆœ์ฐจ์  ํƒ์ƒ‰๊ณผ ๋น„๊ตํ•ด๋ณด๋ฉด ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค. โ‘  ์ˆœ์ฐจ์  ํƒ์ƒ‰ (Sequential Search) โžก๏ธ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ O(n) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. โ‘ก ์ด๋ถ„ ํƒ์ƒ‰ (Binary Search) โžก๏ธ mid ๊ฐ’์„ ๊ตฌํ•ด์„œ ๊ณ„์†ํ•ด์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋ฐ˜์”ฉ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ Tree ๊ตฌ์กฐ์—์„œ ๋งˆ์ง€๋ง‰ leaf ๊ฐ’๊นŒ์ง€ ๋‚ด๋ ค๊ฐ์œผ๋กœ O(logN) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 2๏ธโƒฃ ์ด๋ถ„ํƒ์ƒ‰ ๊ณผ์ • โ‘  ์ฒ˜์Œ ๋ฒ”์œ„๋Š” index 0 ์—์„œ ๋๊นŒ์ง€ ์ด๋‹ค. ์ด ๋•Œ์˜ mid = ๋ฐฐ์—ด์˜ ๊ธธ์ด / 2 โ‘ก..
ยทAlgorithm ๐Ÿค–
โ“๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ โžก๏ธ ๋‹ค์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ์ฃผ์ œ์ธ Graph ์— ๋Œ€ํ•ด์„œ ์˜ˆ์Šต โ—๏ธ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ 1๏ธโƒฃ ๊ทธ๋ž˜ํ”„๋ž€? โ‘  ์ •์˜ โžก๏ธ ์ •์  (Vertex) ์™€ ๊ทธ ์‚ฌ์ด๋ฅผ ์ž‡๋Š” ๊ฐ„์„  (Edge) ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ. โœ”๏ธ ์ •์˜ G = (V,E) : ์ •์ ์˜ ์ง‘ํ•ฉ V ์™€ ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ E ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธ V(G) : ๊ทธ๋ž˜ํ”„ G ์•ˆ์—์„œ์˜ ์ •์ ์˜ ์ง‘ํ•ฉ E(G) : ๊ทธ๋ž˜ํ”„ G ์•ˆ์—์„œ์˜ ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ โ‘ก ์˜ˆ์‹œ (๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊ธฐ์ค€) โžก๏ธ V(G) = {1, 2, 3, 4, 5} โžก๏ธ E(G) = {(1, 2), (3, 1), (3, 2), (4, 1), (5, 2), (5, 4)} 2๏ธโƒฃ ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜ โ‘  ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (Undirected Graph) โžก๏ธ ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์˜ ์†์„ฑ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค. ๋‘ ์ •์  V, W ..
ยทAlgorithm ๐Ÿค–
โ“๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ โžก๏ธ ๋‹ค์Œ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ์ฃผ์ œ์ธ DP ์— ๋Œ€ํ•ด์„œ ์˜ˆ์Šต โ—๏ธ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ 1๏ธโƒฃ Dynamic Programming ์ด๋ž€? โžก๏ธ ๋””์ž์ธ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜๋กœ ์žกํ•œ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. โžก๏ธ Dynamic ์€ '๊ธฐ์–ตํ•˜๊ธฐ' & Programming ์€ '๋‚˜๋ˆ„๊ธฐ' ์ •๋„ ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. โžก๏ธ ๋™์  ๊ณ„ํš๋ฒ•์˜ ํ•ต์‹ฌ์ธ Memorization(DP ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜) ์„ ์ด์šฉํ•ด ๋น ๋ฅธ ์†๋„๋กœ ์ตœ์ ์˜ ํ•ด๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค. 2๏ธโƒฃ DP ๋ฌธ์ œ๊ฐ€ ์„ฑ๋ฆฝํ•  ์กฐ๊ฑด โžก๏ธ DP ๋ฌธ์ œ๊ฐ€ ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌ๊ฒŒ 2๊ฐœ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค. โ‘  ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ (Optional Substructure) โžก๏ธ ์ƒ์œ„ ๋ฌธ์ œ๋ฅผ ํ•˜์œ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜์œ„ ๋ฌธ์ œ์˜ ๋‹ต์„ ๋ชจ..
Doit_Young
'Algorithm ๐Ÿค–' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก