๐Ÿ•๏ธ ICPC Sinchon/Dynamic Programming

[BOJ][C++] ๋ฐฑ์ค€ 9625๋ฒˆ: BABBA

์„ ๋‹ฌ 2023. 4. 13. 23:29
๋ฐ˜์‘ํ˜•
 

9625๋ฒˆ: BABBA

์ƒ๊ทผ์ด๋Š” ๊ธธ์„ ๊ฑท๋‹ค๊ฐ€ ์‹ ๊ธฐํ•œ ๊ธฐ๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ธฐ๊ณ„๋Š” ๋งค์šฐ ๋งค์šฐ ํฐ ํ™”๋ฉด๊ณผ ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ธฐ๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ, ํ™”๋ฉด์—๋Š” A๋งŒ ํ‘œ์‹œ๋˜์–ด์ ธ ์žˆ์—ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋‹ˆ ๊ธ€์ž๊ฐ€ B๋กœ ๋ณ€ํ–ˆ

www.acmicpc.net

 

๋ฌธ์ œ

์ƒ๊ทผ์ด๋Š” ๊ธธ์„ ๊ฑท๋‹ค๊ฐ€ ์‹ ๊ธฐํ•œ ๊ธฐ๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ธฐ๊ณ„๋Š” ๋งค์šฐ ๋งค์šฐ ํฐ ํ™”๋ฉด๊ณผ ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๊ธฐ๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ, ํ™”๋ฉด์—๋Š” 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;
}

 

๋ฐ˜์‘ํ˜•