๋ถํ ์ ๋ณต(2)
-
[์๊ณ ๋ฆฌ์ฆ] ์นด๋ผ์ถ๋ฐ์ ๋น ๋ฅธ ๊ณฑ์ (Karatsuba)
123 × 456 = ? ํ์์ ์ผ์์ ์ผ๋ก ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ถ์์ ์ผ๋ก ํ์ด์จ๋ณด๋ฉด ์ด๋ ๋ค. ์ฐ๋ฆฌ๋ ํ์ ํ ์๋ฆฌ์ 0๋ถํฐ 9๊น์ง์ ์ซ์๋ง ์ฌ์ฉํ๋ ์ญ์ง๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๊ฐ ์๋ฆฌ๋ณ๋ก ์ญ์ ์๋ฆฌ ์๋ ๋ค์ ์นธ์ผ๋ก ๋๊ฒจ์ค๋ค(์๋ฅผ ๋ค์ด 10์ ์๋ฆฌ 27์ (20 + 7)์ด๋ฏ๋ก 100์ ์๋ฆฌ๋ก 2๋ฅผ ๋๊ฒจ์ค๋ค). (4 * 10000) + (13 * 1000) + (28 * 100) + (27 * 10) + (18 * 1) = (5 * 10000) + (6 * 1000) + (0 * 100) + (8 * 10) + (8 * 1) = 56088 ์ต์ข ์ ์ผ๋ก ๊ฐ์ ์ด๋ ๊ฒ ๊ณ์ฐํด ๋ผ ์์๋ค. 456์ ๊ฐฏ์๋งํผ, 123์ ๊ฐ ์์(1, 2, 3)๊ณผ ํ ๋ฒ์ฉ ๊ณฑ์ ์ฐ์ฐ์ ํด์ผํจ์ ์ ์์๋ค. ๋ฐ๋ผ์ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ง์ฝ ..
2020.07.28 -
[์๊ณ ๋ฆฌ์ฆ] ๋ถํ ์ ๋ณต(Divide & Conquer)
์ ํด๋น ๋จ์ ๋ฐ์ค์ ๋๋ค. "๋ถํ ์ ๋ณต์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๋๊ฐ ์ธ ๊ฐ์ง์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋น์ทํ ํฌ๊ธฐ์ ๋ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ๋ ๊ณผ์ (divide) ๊ฐ ๋ฌธ์ ์ ๋ํด ๊ตฌํ ๋ต์ ์๋ ๋ฌธ์ ์ ๋ํ ๋ต์ผ๋ก ๋ณํฉํ๋ ๊ณผ์ (merge) ๋์ด์ ๋ต์ ๋ถํ ํ์ง ์๊ณ ๊ณง์ฅ ํ ์ ์๋ ๋งค์ฐ ์์ ๋ฌธ์ (base case)" "๊ฐ์ ๋ฌธ์ ๋ผ๋ ์ด๋ป๊ฒ ๋ถํ ํ๋๋์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋ ์ฐจ์ด๊ฐ ์ปค์ง๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์ข์ ์์ ๋๋ค. ์ฌ๋ฌ๋ฒ ์ค๋ณต๋์ด ๊ณ์ฐ๋๋ฉด์ ์๊ฐ์ ์๋ชจํ๋ ๋ถ๋ถ ๋ฌธ์ ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค." โโ ๋ณํฉ ์ ๋ ฌ (Merge Sort) ์์ด์ ๊ฐ์ด๋ฐ์์ ์ชผ๊ฐ ๋ ๊ฐ์ ๋ถ๋ถ์์ด๋ก ๋ง๋ค๊ณ , ๊ฐ ๋ถ๋ถ ์์ด์ ๋ํด์๋ ๊ฐ์ ์ ์ฐจ๋ฅผ ์ฌ๊ท ํธ์ถํ๋ค. ๊ธฐ์ ์ฌ๋ก(base case)๊น์ง ์ชผ๊ฐ ๊ฐ์ด ๋ฐํ๋๋ฉด, ..
2020.07.28