๋ถํ ์ ๋ณต(Divide and Conquer)
๐ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ n๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ค๋ก ๋๋ ํ, ๊ฐ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๋ฅผ ๊ตฌํ์ฌ ์๋ ๋ฌธ์ ์ ํด๋ต์ผ๋ก ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๐ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ์๋์ ๋ฌธ์ ์ ๊ฐ์ ์ ํ์ด๋ฉฐ, ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ง ์๋ค. ๐ ๋ณดํต ์ํ ํธ์ถ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ๋ค. if(๋ฌธ์ ์ ํฌ๊ธฐ๊ฐ ์ถฉ๋ถํ ์์ผ๋ฉด) return ํด๋ต else{ ๋ฌธ์ ๋ฅผ ๋ ์์ n๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ค๋ก ๋๋๋ค ๋๋ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ๋ํด์ ๋ค์ ์ํํธ์ถ return ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๋ต ๊ฒฐํฉ } 1. ์ด์ง ํ์(์ด๋ถํ์) 1.1 ๋ฌธ์ : ์ ๋ ฌ๋ ์ํ์ ๋ฆฌ์คํธ์์ x์ ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด, ๊ทธ ์์น๋ฅผ ๊ฒฐ์ ํ๋ผ ๐ ๋ถํ ์ ๋ณต ๊ธฐ๋ฒ ์ ์ฉ n=1์ด๋ฉด(์์๊ฐ 1๊ฐ ์์ ๋) { x=์์ return ํด x!=์์ return -1 } n>1์ด๋ฉด { ๊ธฐ์ค ์์๋ณด๋ค ์์ ์์๋ค ์ง..
์๊ณ ๋ฆฌ์ฆ ์ค๊ณ๊ธฐ๋ฒ ์ ๋ฆฌ
์๊ณ ๋ฆฌ์ฆ์ด๋? - ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋๋ก ๋ช ํํ๊ฒ ๊ธฐ์ ํ ๊ฒ - ์ด๋ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํด์ง ์ผ๋ จ์ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ฒ - ๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ๊ณ์ฐ ์ ์ฐจ ๋๋ ์ฒ๋ฆฌ ๊ณผ์ ์ ์์ - ์ ํ๋ ์๊ฐ๊ณผ ๊ณต๊ฐ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง ์ ์ํ ๋ก์ง - ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํน์ ํ ์ ๋ ฅ์ ๋ฐ์์ ์คํํ ๊ฒฐ๊ณผ์ธ ํด๋ฅผ ์ถ๋ ฅ 1. ๋ถํ ์ ๋ณต(Divide and Conquer) 1.1 ์ ์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๊ฐ์ ์ ํ์ ๋ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ค๋ก ๋ ์ด์ ๋๋ ์ ์์ ๋๊น์ง ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ํ, ๋ค์ ํฉ๋ณํ์ฌ ๋ฌธ์ ์ ๋ต์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. 1.2 ์ ๋ต โ ๋ถํ (Divide) : ๋ฌธ์ ๋ฅผ ๋์ผํ ์ ํ์ ์ฌ๋ฌ ํ์ ๋ฌธ์ ๋ก ๋๋๋ค. โก ์ ๋ณต(Conquer) : ๊ฐ..