[๐Ÿ“—c์–ธ์–ด ์‰ฝ๊ฒŒ ํ’€์–ด์“ด ์ž๋ฃŒ๊ตฌ์กฐ2] ์ˆœํ™˜

์•ˆ์ง€์ˆ˜ยท2023๋…„ 2์›” 7์ผ
0

๐Ÿ‘‘ ์ˆœํ™˜์˜ ์†Œ๊ฐœ(ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ- ๋ฐ˜๋ณต์ด ํšจ์œจ์ )

  • ์ˆœํ™˜: ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ• (๋ฐ˜๋ณต์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ! but ๋ฌธ์ œ์— ๋”ฐ๋ผ ์ˆœํ™˜์ด ํšจ์œจ์ ์ผ ์ˆ˜๋„, ๋ฐ˜๋ณต์ด ํšจ์šธ์ ์ผ ์ˆ˜๋„)

  • ๋ถ„ํ• ์ •๋ณต๋ฐฉ๋ฒ• : ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ํ•ด๊ฒฐ (์ผ๋ถ€ ํ•ด๊ฒฐ ํ›„ ๋‚˜๋จธ์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ˆœํ™˜ ํ˜ธ์ถœ)

  • ์ข…๋ฃŒ๋ถ€ and ์ˆœํ™˜๋ถ€
    -> ํ˜ธ์ถœ ์‹œ ์Šคํƒ์— ํ™œ์„ฑ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๊ธฐ๋ก์ด ๋˜๋Š”๋ฐ, ์ข…๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์Šคํƒ์— ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜์—ฌ ์˜ค๋ฅ˜ ์ƒ์„ฑ

  • ํŒฉํ† ๋ฆฌ์–ผ ๋ฌธ์ œ-์ˆœํ™˜

int factorial(int n) {
	if (n <= 1) return 1;  //์ข…๋ฃŒ๋ถ€
	else return (n*factorial(n - 1));
}

-> ๊ผฌ๋ฆฌ์ˆœํ™˜: 'n*factorial(n - 1)'์™€ ๊ฐ™์ด ์ˆœํ™˜ ํ˜ธ์ถœ์ด ๋์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝ์šฐ - ๋ฐ˜๋ณต์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ (๋จธ๋ฆฌ์ˆœํ™˜, ๊ผฌ๋ฆฌ์ˆœํ™˜ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ๊ผฌ๋ฆฌ์ˆœํ™˜์œผ๋กœ!!!)
-> ๊ฐ€๋…์„ฑ, ๊ฐ„๋‹จ, ์‰ฌ์›€ (but, ์‹คํ–‰์‹œ๊ฐ„ ์˜ค๋ž˜๊ฑธ๋ฆผ-ํ•จ์ˆ˜ ํ˜ธ์ถœ, ์—ฌ๋ถ„์˜ ๊ธฐ์–ต ์žฅ์†Œ ํ•„์š”- ์ƒํƒœ ๊ธฐ์–ตํ•ด์•ผํ•˜๋ฏ€๋กœ)

๐Ÿ‘‘ ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’ ๊ณ„์‚ฐ- ์ˆœํ™˜์ด ํšจ์œจ์ 

double power(double x, int n) {
	if (n == 0) return 1;
	else if ((n % 2) == 0) return power(x*x, n / 2);
	else return x*power(x*x, (n - 1) / 2);
}

-> ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log2n)

๐Ÿ‘‘ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ๊ณ„์‚ฐ- ๋ฐ˜๋ณต์ด ํšจ์œจ์ 

  • ์ˆœํ™˜ ํ˜ธ์ถœ ์‹œ ๊ฐ™์€ ๊ฒƒ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ-> ๋งค์šฐ ๋น„ํšจ์œจ์ 

๐Ÿ‘‘ ํ•˜๋…ธ์ดํƒ‘ ๋ฌธ์ œ

: ์ˆœํ™˜์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ œ

profile
์ง€์ˆ˜์˜ ์ทจ์ค€, ๊ฐœ๋ฐœ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€