https://www.acmicpc.net/problem/1003
๋ฌธ์
๋ค์ ์์ค๋ N๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋ C++ ํจ์์ด๋ค.
int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(nโ1) + fibonacci(nโ2); } }
fibonacci(3)์ ํธ์ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ์ผ์ด๋๋ค.
- fibonacci(3)์ fibonacci(2)์ fibonacci(1) (์ฒซ ๋ฒ์งธ ํธ์ถ)์ ํธ์ถํ๋ค.
- fibonacci(2)๋ fibonacci(1) (๋ ๋ฒ์งธ ํธ์ถ)๊ณผ fibonacci(0)์ ํธ์ถํ๋ค.
- ๋ ๋ฒ์งธ ํธ์ถํ fibonacci(1)์ 1์ ์ถ๋ ฅํ๊ณ 1์ ๋ฆฌํดํ๋ค.
- fibonacci(0)์ 0์ ์ถ๋ ฅํ๊ณ , 0์ ๋ฆฌํดํ๋ค.
- fibonacci(2)๋ fibonacci(1)๊ณผ fibonacci(0)์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ , 1์ ๋ฆฌํดํ๋ค.
- ์ฒซ ๋ฒ์งธ ํธ์ถํ fibonacci(1)์ 1์ ์ถ๋ ฅํ๊ณ , 1์ ๋ฆฌํดํ๋ค.
- fibonacci(3)์ fibonacci(2)์ fibonacci(1)์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ , 2๋ฅผ ๋ฆฌํดํ๋ค.
1์ 2๋ฒ ์ถ๋ ฅ๋๊ณ , 0์ 1๋ฒ ์ถ๋ ฅ๋๋ค. N์ด ์ฃผ์ด์ก์ ๋, fibonacci(N)์ ํธ์ถํ์ ๋, 0๊ณผ 1์ด ๊ฐ๊ฐ ๋ช ๋ฒ ์ถ๋ ฅ๋๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. N์ 40๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค 0์ด ์ถ๋ ฅ๋๋ ํ์์ 1์ด ์ถ๋ ฅ๋๋ ํ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
๋ด ํ์ด
dp๋ก ํ ์ ์๋ ๋ฌธ์ ๋ผ dp๋ฅผ ํ์ฉํ์ฌ ํ์ด์ฃผ์๋ค.
N์ด ์ต๋ 40์ด๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด๋ ๋ถ๋ด์ด ์์ด ๋ฏธ๋ฆฌ ๊ณ์ฐํ ๋ค์,
์ ๋ ฅํ ๊ฐ์ ๋ฐ๋ฅธ ๊ณ์ฐ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํด์ฃผ์๋ค.
#include <iostream> using namespace std; int main() { long long dp[41][2]; dp[0][0] = 1; dp[0][1] = 0; dp[1][0] = 0; dp[1][1] = 1; for (int i = 0; i < 41; ++i) { if (i >= 2) { dp[i][0] = dp[i - 1][0] + dp[i - 2][0]; dp[i][1] = dp[i - 1][1] + dp[i - 2][1]; } } int count; cin >> count; int n; for (int i = 0; i < count; ++i) { cin >> n; cout << dp[n][0] << ' ' << dp[n][1] << endl; } }
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1926] ๊ทธ๋ฆผ(C++) (0) | 2023.11.18 |
---|---|
[๋ฐฑ์ค 1931] ํ์์ค ๋ฐฐ์ (C++) (0) | 2023.10.26 |
[Hacker Rank] Organizing Containers of Balls (C++) (1) | 2023.10.09 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ์นด๋ ์ง ๋ง์ถ๊ธฐ(C++) (1) | 2023.10.05 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ถ๋๋ณต๊ท (C++) (0) | 2023.10.04 |