๋ฐ์ํ
๋ฌธ์
์๊ทผ์ด๋ ๊ธธ์ ๊ฑท๋ค๊ฐ ์ ๊ธฐํ ๊ธฐ๊ณ๋ฅผ ๋ฐ๊ฒฌํ๋ค. ๊ธฐ๊ณ๋ ๋งค์ฐ ๋งค์ฐ ํฐ ํ๋ฉด๊ณผ ๋ฒํผ ํ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๊ธฐ๊ณ๋ฅผ ๋ฐ๊ฒฌํ์ ๋, ํ๋ฉด์๋ A๋ง ํ์๋์ด์ ธ ์์๋ค. ๋ฒํผ์ ๋๋ฅด๋ ๊ธ์๊ฐ B๋ก ๋ณํ๋ค. ํ ๋ฒ ๋ ๋๋ฅด๋ BA๋ก ๋ฐ๋๊ณ , ๊ทธ ๋ค์์๋ BAB, ๊ทธ๋ฆฌ๊ณ BABBA๋ก ๋ฐ๋์๋ค. ์๊ทผ์ด๋ ํ๋ฉด์ ๋ชจ๋ B๋ BA๋ก ๋ฐ๋๊ณ , A๋ B๋ก ๋ฐ๋๋ค๋ ์ฌ์ค์ ์๊ฒ๋์๋ค.
๋ฒํผ์ K๋ฒ ๋๋ ์ ๋, ํ๋ฉด์ A์ B์ ๊ฐ์๋ ๋ช ๊ฐ๊ฐ ๋ ๊น?
์ ๋ ฅ
์ฒซ์งธ ์ค์ K (1 ≤ K ≤ 45)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ A์ ๊ฐ์์ B์ ๊ฐ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ์ถ๋ ฅํ๋ค.
ํ์ด
#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> ci;
int main() {
int k, a,b;
cin >> k;
vector<ci> v(k+1); // {A ๊ฐฏ์, B ๊ฐฏ์}
v[0] = {1, 0};
for(int i=1; i<=k; i++) {
a = v[i-1].first;
b = v[i-1].second;
v[i] = {b, a+b};
}
cout << v[k].first << " " << v[k].second;
return 0;
}
๋ฐ์ํ
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1912๋ฒ: ์ฐ์ํฉ (0) | 2023.11.03 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2491๋ฒ: ์์ด (0) | 2023.04.17 |
[BOJ][C++] ๋ฐฑ์ค 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ (0) | 2023.01.30 |
[BOJ][C++] ๋ฐฑ์ค 1149๋ฒ: RGB๊ฑฐ๋ฆฌ (0) | 2023.01.30 |
[BOJ][C++] ๋ฐฑ์ค 2748๋ฒ: ํผ๋ณด๋์น ์ 2 (0) | 2023.01.30 |