์‹ค๋ฒ„3 : ๋™์ ๊ณ„ํš๋ฒ• ๋ฌธ์ œ์ด๋‹ค.

์ƒ๊ฐ

์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€, ์ตœ๊ณ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ 0 ๋˜๋Š” 1์ผ ๋•Œ์˜ ์ƒํ™ฉ์„ ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ์ด์œ ๋Š” ๋‚˜์—ดํ•˜๋ฉด ๊ธˆ๋ฐฉ ์•Œ์•„์ฐจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

|N|1||2||3|| |:|:|::|:|::|:|::| ||0|X|00|X|000|X| ||1|O|01|X|001|X| ||||10|O|010|X| ||||11|X|011|X| ||||||100|O| ||||||101|O| ||||||110|X| ||||||111|X| |||1||1||2|

์—ฌ๊ธฐ์„œ N์ด 2 ์ผ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์•ž์ž๋ฆฌ์— 1์ด ์žˆ์–ด์•ผ ํ•˜๊ณ , ๊ทธ ๋’ค๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. 0์œผ๋กœ ์‹œ์ž‘ํ•œ ์ดํ›„์—๋Š” ์ด์นœ์ˆ˜๊ฐ€ ์™€์•ผํ•œ๋‹ค. ๊ทธ๋Ÿด ๊ฒฝ์šฐ์— ์ƒˆ๋กœ์šด ์ด์นœ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ N์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋‹ค์Œ ์ž๋ฆฌ์ˆ˜์˜ ์ด์นœ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ตœ๊ณ ์ž๋ฆฌ๊ฐ€ 0์ธ ์ƒํ™ฉ์—์„œ ๋‹ค์Œ ์ˆซ์ž๋ถ€ํ„ฐ ๊ฐ€์ง€๋Š” ์ด์นœ์ˆ˜๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ •์˜

dp[N][0] : N์ž๋ฆฌ์ˆ˜์˜ ์ตœ๊ณ ์ž๋ฆฌ๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์ดํ›„ ์ž๋ฆฌ์ˆ˜์—์„œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ด์นœ์ˆ˜์˜ ๊ฐœ์ˆ˜

dp[N][1] : N์ž๋ฆฌ์ˆ˜์˜ ์ตœ๊ณ ์ž๋ฆฌ๊ฐ€ 1์ผ ๊ฒฝ์šฐ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ด์นœ์ˆ˜์˜ ๊ฐœ์ˆ˜

์ ํ™”์‹

dp[N][0] = dp[N-1][0] + dp[N-1][1];

์ตœ๊ณ ์ž๋ฆฌ์ˆ˜๊ฐ€ 0์ผ ๋•Œ, ์œ„์˜ ์ •์˜์— ๋งž๋Š” ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ ๋‹ค์Œ ์ž๋ฆฌ์˜ ์ˆ˜๊ฐ€ 1์ธ ๊ฒฝ์šฐ์™€, 0์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์ฃผ์–ด์•ผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

dp[N][1] = dp[N-1][0];

1์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด ๋‹ค์Œ ์ž๋ฆฌ์ˆ˜๊ฐ€ 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด์นœ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์œ„์™€ ๊ฐ™๋‹ค.

Code

// ์‹ค๋ฒ„3 : ๋ฐฑ์ค€ 2193๋ฒˆ ์ด์นœ์ˆ˜
#include <iostream>
using namespace std;
 
int main(){
    int N;
    long long dp[91][2];
    cin >> N;
    dp[1][0] = 1;
    dp[1][1] = 1;
    for (int i = 2; i <= N; i++) {
        dp[i][0] = dp[i-1][0] + dp[i-1][1];
        dp[i][1] = dp[i-1][0];
    }
    cout << dp[N][1] << '\n';
}
 

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด

๊ทธ๋Ÿฐ๋ฐ ์œ„์˜ ์ ํ™”์‹์„ ์ž˜ ์ •๋ฆฌํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ํ˜•ํƒœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

\\begin{align} dp\[N\]\[0\] + dp\[N\]\[1\] & = (dp\[N-1\]\[0\] + dp\[N-1\]\[1\]) + dp\[N\]\[1\] \\ & =(dp\[N-1\]\[0\] + dp\[N-1\]\[1\]) + dp\[N\]\[0\] \\ &= (dp\[N-1\]\[0\] + dp\[N-1\]\[1\]) + (dp\[N-2\]\[0\] + dp\[N-2\]\[1\]) \\end{align}

๋‹ค์ด๋‚˜๋ฏน์€ ๋์ด ์—†๋‹ค.

Reference