ํผ๋ณด๋์น ์์ด์ด๋
์์ด์ด๋ ์ด๋ ํ ๊ณตํต๋ ๊ท์น์ ๊ฐ์ง ์ซ์๋ค์ ์ด์ ๋งํ๋ค.
ํผ๋ณด๋์น์์ด์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด
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);
}
ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์ด์ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋๊ธ๋ก ์ง์ ํด์ฃผ์ธ์!
๊ฐ์ฌํฉ๋๋ค :)

'๐ป > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(Sliding Window) (0) | 2024.10.28 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๋์ ํฉ(Prefix Sum) +Java๊ฐ์ฒด ๋ฐฐ์ด ์ ์ธ & ์์ฑ (2) | 2024.10.28 |