Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/Algorithm

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ตฌํ˜„ํ•˜๊ธฐ

by soonybutter 2024. 7. 22.
728x90
ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด๋ž€

[์ด๋ฏธ์ง€ ์ถœ์ฒ˜- Samsung display newsroom]

 

์ˆ˜์—ด์ด๋ž€ ์–ด๋– ํ•œ ๊ณตํ†ต๋œ ๊ทœ์น™์„ ๊ฐ€์ง„ ์ˆซ์ž๋“ค์˜ ์—ด์„ ๋งํ•œ๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜์ˆ˜์—ด์€ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด

n๋ฒˆ์งธ ์ˆ˜ = (n-1)๋ฒˆ์งธ ์ˆ˜ + (n-2)๋ฒˆ์งธ ์ˆ˜

 

ํ˜•ํƒœ์˜ ๊ทœ์น™์„ ๊ฐ€์ง€๋Š” ์ˆ˜์—ด์ด๋‹ค.

(๋‹จ, n=1or n=0 ์ผ๋•Œ 1์ด๋ฉฐ ์œ„์˜ ์‹์€ n>=2๋ถ€ํ„ฐ ์ ์šฉ๋จ.)

 

 

 

 

 

๊ทธ๋Ÿผ ์ด ์ˆ˜์—ด์€ ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ.

์•„๋ž˜์˜ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž.

 

Q. ์ž…๋ ฅ๋ฐ›๋Š” ์ˆซ์ž ํ•˜๋‚˜๊ฐ€ ์ˆ˜์—ด์˜ ์ธ๋ฑ์Šค๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๋•Œ, ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ์‹œ์˜ค.

 

ex)

์ž…๋ ฅ: 5

์ถœ๋ ฅ: 8

 

์ž…๋ ฅ:1

์ถœ๋ ฅ:1

 

์ž…๋ ฅ:234

์ถœ๋ ฅ:57239589

 

 

1. while๋ฌธ์„ ํ†ตํ•œ ๊ตฌํ˜„

 

 

 

 

2. ์ถœ๋ ฅ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด์„œ ๊ตฌํ˜„ (fiboํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ)

 

#include <iostream>

using namespace std;

int fibo(int num)
{
	if (num <= 1)
	{
		return 1;
	}

	return fibo(num - 2) + fibo(num - 1); //์›๋ž˜ ์ด ๋ฆฌํ„ด๊ฐ’์„ ๋ฌด์กฐ๊ฑด ํŠ€์–ด๋‚˜์˜ค๊ฒŒ ํ•˜๋Š” ํ•จ์ˆ˜ 
}

int main()
{
	int num;
	cin >> num;

	cout<< fibo(num);

	return 0;
}

 

fibo๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ผ์ •ํ•œ ํ˜•ํƒœ fibo(num - 2) + fibo(num - 1) ๋ฅผ ๋ฆฌํ„ดํ•ด์คŒ์œผ๋กœ์„œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.

๋ฐ”๋กœ fibo(num - 2) + fibo(num - 1) ์„ ์‹คํ–‰ํ•˜๋ฉด 2๊ฐœ์˜ ๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜์–ด ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ,

๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ์ค‘๋ณต๋˜๋Š” ๊ฐœ์ฒด(๊ฐ€์ง€)๊ฐ€ ์ƒ๊ธด๋‹ค๋Š”๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ input๊ฐ’(index๊ฐ’)์œผ๋กœ ํฐ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ฉˆ์ถ˜๋‹ค....

 

์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์ด์ „์— ๋ฏธ๋กœ์ฐพ๊ธฐ์—์„œ ๊ฐ”๋˜ ๊ธธ์„ ๋‹ค์‹œ ์•ˆ ๊ฐ€๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์—ˆ๋˜ usedํ•จ์ˆ˜์™€ ๊ฐ™์€ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋‘˜๋กœ ์ชผ๊ฐค๋•Œ๋งˆ๋‹ค ํ•ด๋‹น๊ฐ’๋“ค์„ ๋ชจ๋‘ memorizeํ•จ์ˆ˜์— ์ €์žฅํ•˜๊ณ ,(usedํ•จ์ˆ˜์™€ ๊ฐ™์€๊ธฐ๋Šฅ)

์ด์ „์— ์ด๋ฏธ ๋‘˜๋กœ ์ชผ๊ฐœ์–ด ๊ณ„์‚ฐ๋˜์—ˆ๋˜ ์ ์ด ์žˆ๋Š” ์ธ๋ฑ์Šค ๊ฐ€์ง€์ •๋ณด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ memorizeํ•จ์ˆ˜์—์„œ ์ฐพ์•„๋‹ค๊ฐ€  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์„ธ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

3. ์ถœ๋ ฅ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜+ memorizeํ•จ์ˆ˜ (fiboํ•จ์ˆ˜+memorizeํ•จ์ˆ˜)
#include <iostream>

using namespace std;

int memorize[100000] = { 0 };

int fibo(int num);

int main()
{
	int num;
	cin >> num;

	cout<< fibo(num);

	return 0;
}


int fibo(int num)
{
	if (num <= 1)
	{
		return 1; //num์ด 0,1์ผ๋•Œ๋งŒ 1 ํŠ€์–ด๋‚˜์˜ค๊ฒŒ ํ•จ
	}

	if (memorize[num])
	{
		return memorize[num];
	}

	return memorize[num] = fibo(num - 2) + fibo(num - 1); 

}

 

 

 

 

 

 

 

 

 

 

 

ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด๋‚˜ ์ด์ƒํ•œ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์ง€์ ํ•ด์ฃผ์„ธ์š”! 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ