[python] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: ์ฟผ๋“œ ํŠธ๋ฆฌ ๋’ค์ง‘๊ธฐ (189p) ๋ฌธ์ œ
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 2. 29. 12:54

7.2 ๋ฌธ์ œ : ์ฟผ๋“œ ํŠธ๋ฆฌ ๋’ค์ง‘๊ธฐ (๋ฌธ์ œ ID:QUADTREE, ๋‚œ์ด๋„: ํ•˜) ๋Œ€๋Ÿ‰์˜ ์ขŒํ‘œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ์••์ถ•ํ•ด ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ• ์ค‘ ์ฟผ๋“œ ํŠธ๋ฆฌ๋ž€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๊ณต๊ฐ„์„ ํ•ญ์ƒ 4๊ฐœ๋กœ ๋ถ„ํ• ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋“œ ํŠธ๋ฆฌ๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ˆ๋Š”๋ฐ, ์ด์˜ ์œ ๋ช…ํ•œ ์‚ฌ์šฉ์ฒ˜ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฒ€์€ ์ƒ‰๊ณผ ํฐ ์ƒ‰๋ฐ–์— ์—†๋Š” ํ‘๋ฐฑ ๊ทธ๋ฆผ์„ ์••์ถ•ํ•ด ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฟผ๋“œ ํŠธ๋ฆฌ๋Š” 2^N*2^N ํฌ๊ธฐ์˜ ํ‘๋ฐฑ ๊ทธ๋ฆผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ฌธ์ž์—ด๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ทธ๋ฆผ์˜ ๋ชจ๋“  ํ”ฝ์…€์ด ๊ฒ€์€ ์ƒ‰์ผ ๊ฒฝ์šฐ ์ด ๊ทธ๋ฆผ์˜ ์ฟผ๋“œ ํŠธ๋ฆฌ ์••์ถ• ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ฆผ์˜ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด b๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ทธ๋ฆผ์˜ ๋ชจ๋“  ํ”ฝ์…€์ด ํฐ ์ƒ‰์ผ ๊ฒฝ์šฐ ์ด ๊ทธ๋ฆผ์˜ ์ฟผ๋“œ ํŠธ๋ฆฌ ์••์ถ• ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ฆผ์˜ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด w๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”ฝ์…€์ด ๊ฐ™์€ ์ƒ‰์ด ..

[python] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: 7์žฅ ์ •๋ฆฌ
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 2. 29. 12:46

7. ๋ถ„ํ•  ์ •๋ณต 7.1 ๋„์ž… ๋ถ„ํ•  ์ •๋ณต( Divide & Conquer)์€ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋””์ž์ธ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ, ๊ฐ๊ฐœ ๊ฒฉํŒŒ๋ผ๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Œ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋‘˜ ์ด์ƒ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆˆ ํ›„, ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ด์šฉํ•ด ๊ฐ๊ฐ์˜ ๋‹ต์„ ๊ณ„์‚ฐํ•˜๊ณ , ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ด์šฉํ•ด ์ „์ฒด์˜ ๋‹ต์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌ์„ฑ divide ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ•  merge ๊ฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ „์ฒด ๋ฌธ์ œ์˜ ๋‹ต์œผ๋กœ ๋ณ‘ํ•ฉ base case ๋”์ด์ƒ ๋‹ต์„ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ  ํ’€ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ž‘์€ ๋ฌธ์ œ ์ ์šฉ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์˜ ํŠน์„ฑ ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ด์•ผํ•จ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ๋‹ต์„ ์กฐํ•ฉํ•ด ์ „์ฒด ๋ฌธ์ œ์˜ ๋‹ต์„ ๊ณ„์‚ฐํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผํ•จ ์žฅ์  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—์„œ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์คŒ ์˜ˆ์ œ : ์ˆ˜์—ด์˜ ๋น ๋ฅธ ํ•ฉ๊ณผ ํ–‰๋ ฌ์˜ ๋น ๋ฅธ..

[python] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: ๊ฒŒ์ž„ํŒ ๋ฎ๊ธฐ (p159) ๋ฌธ์ œ
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 2. 14. 22:53

6.5 ๋ฌธ์ œ : ๊ฒŒ์ž„ํŒ ๋ฎ๊ธฐ (๋ฌธ์ œ ID: BOARDCOVER, ๋‚œ์ด๋„: ํ•˜) ๋ฌธ์ œ H X W ํฌ๊ธฐ์˜ ๊ฒŒ์ž„ํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ํŒ์€ ๊ฒ€์€ ์นธ๊ณผ ํฐ ์นธ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฉ์ž ๋ชจ์–‘์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ์ค‘ ๋ชจ๋“  ํฐ ์นธ์„ ์„ธ ์นธ์งœ๋ฆฌ L์ž ๋ชจ์–‘์˜ ๋ธ”๋ก์œผ๋กœ ๋ฎ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๋ธ”๋ก๋“ค์€ ์ž์œ ๋กญ๊ฒŒ ํšŒ์ „ํ•ด์„œ ๋†“์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋กœ ๊ฒน์น˜๊ฑฐ๋‚˜, ๊ฒ€์€ ์นธ์„ ๋ฎ๊ฑฐ๋‚˜, ๊ฒŒ์ž„ํŒ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ํ•œ ๊ฒŒ์ž„ํŒ๊ณผ ์ด๋ฅผ ๋ฎ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฒŒ์ž„ํŒ์ด ์ฃผ์–ด์งˆ ๋•Œ ์ด๋ฅผ ๋ฎ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์‹œ๊ฐ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ํ”„๋กœ๊ทธ๋žจ์€ 2์ดˆ ์•ˆ์— ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, 64MB ์ดํ•˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ C(C=0 and tmp[0]=0 and tmp[1]=0 ..

[python] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: ์†Œํ’ (p155) ๋ฌธ์ œ
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 2. 12. 01:28

6.3 ๋ฌธ์ œ: ์†Œํ’ (๋ฌธ์ œ ID: PICNIC, ๋‚œ์ด๋„: ํ•˜) ๋ฌธ์ œ ์•ˆ๋“œ๋กœ๋ฉ”๋‹ค ์œ ์น˜์› ์ต์Šคํ”„๋ ˆ์Šค๋ฐ˜์—์„œ๋Š” ๋‹ค์Œ ์ฃผ์— ์œจ๋™๊ณต์›์œผ๋กœ ์†Œํ’์„ ๊ฐ‘๋‹ˆ๋‹ค. ์›์„ ์„ ์ƒ๋‹˜์€ ์†Œํ’ ๋•Œ ํ•™์ƒ๋“ค์„ ๋‘ ๋ช…์”ฉ ์ง์„ ์ง€์–ด ํ–‰๋™ํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„œ๋กœ ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ํ•™์ƒ๋“ค๋ผ๋ฆฌ ์ง์„ ์ง€์–ด ์ฃผ๋ฉด ์„œ๋กœ ์‹ธ์šฐ๊ฑฐ๋‚˜ ๊ฐ™์ด ๋Œ์•„๋‹ค๋‹ˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ•ญ์ƒ ์„œ๋กœ ์นœ๊ตฌ์ธ ํ•™์ƒ๋“ค๋ผ๋ฆฌ๋งŒ ์ง์„ ์ง€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ•™์ƒ๋“ค์˜ ์Œ์— ๋Œ€ํ•ด ์ด๋“ค์ด ์„œ๋กœ ์นœ๊ตฌ์ธ์ง€ ์—ฌ๋ถ€๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ํ•™์ƒ๋“ค์„ ์ง ์ง€์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์ง์ด ๋˜๋Š” ํ•™์ƒ๋“ค์ด ์ผ๋ถ€๋งŒ ๋‹ค๋ฅด๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. (ํƒœ์—ฐ,์ œ์‹œ์นด)(์จ๋‹ˆ,ํ‹ฐํŒŒ๋‹ˆ)(ํšจ์—ฐ,์œ ๋ฆฌ) (ํƒœ์—ฐ,์ œ์‹œ์นด)(์จ๋‹ˆ,์œ ๋ฆฌ)(ํšจ์—ฐ, ํ‹ฐํŒŒ๋‹ˆ) ์‹œ..

[python] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: ๋ณด๊ธ€๊ฒŒ์ž„ (p150) ๋ฌธ์ œ
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 2. 11. 16:48

์˜ˆ์ œ: ๋ณด๊ธ€ ๊ฒŒ์ž„ (๋ฌธ์ œ ID: BOGGLE, ๋‚œ์ด๋„: ํ•˜) ๋ฌธ์ œ 5*5 ํฌ๊ธฐ์˜ ์•ŒํŒŒ๋ฒณ ๊ฒฉ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ํ•˜๋Š” ๊ฒŒ์ž„. ๊ฒŒ์ž„์˜ ๋ชฉ์ ์€ ์ƒํ•˜์ขŒ์šฐ / ๋Œ€๊ฐ์„ ์œผ๋กœ ์ธ์ ‘ํ•œ ์นธ๋“ค์˜ ๊ธ€์ž๋“ค์„ ์ด์–ด์„œ ๋‹จ์–ด๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธ€์ž๋“ค์€ ๋Œ€๊ฐ์„ ์œผ๋กœ๋„ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•œ ๊ธ€์ž๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ์นธ์—์„œ ์‹œ์ž‘ํ•ด์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ’€์–ด ๋ด…์‹œ๋‹ค. ์ž…๋ ฅ 1 1 PRETTY ์ถœ๋ ฅ True ํ’€์ด ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ• ์ƒ๊ฐ ์™„์ „ ํƒ์ƒ‰ ๋ฌธ์ œ ๋ถ„ํ•  ์ฒซ ๊ธ€์ž ์ฐพ๊ธฐ => ๋‹ค์Œ ๊ธ€์ž๋ฅผ ์ฃผ๋ณ€์—์„œ ์ฐพ๊ธฐ ๊ธฐ์ € ์‚ฌ๋ก€ ์„ ํƒ ๋” ์ด์ƒ์˜ ํƒ์ƒ‰ ์—†์ด ๊ฐ„๋‹จํžˆ ๋‹ต์„ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฒ˜์Œ ์ฃผ์–ด์ง„ ์œ„์น˜๊ฐ€ ์›ํ•˜๋Š” ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์‹คํŒจ 1์— ํ•ด๋‹นํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๋‹จ์–ด๊ฐ€ 1๊ธ€์ž์ธ ๊ฒฝ์šฐ ์„ฑ๊ณต ๋‘˜์˜ ์ˆœ์„œ๋Š” ๋ฐ”๋€Œ..