๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

boj >> 2193 ์ด์นœ์ˆ˜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
using namespace std;
// ๋ผ์ด์˜ ๋ธ”๋กœ๊ทธ DP #2
#define MAX 100
#define LL long long
 
LL dp[MAX][2]={0};
 
void binary(int N){
    if(N<2){
        dp[0][0= 0;
        dp[1][0= 0;
        dp[1][1= 1;
    } else{
        binary(N-1);
        dp[N][0= dp[N-1][0]+dp[N-1][1];
        dp[N][1= dp[N-1][0];
    }
}
int main(){
    // ๊ฑฐ๊พธ๋กœ ์ƒ๊ฐ์„ ํ•ด์„œ dp[K][0]: K์ž๋ฆฌ ์ด์นœ์ˆ˜๊ฐ€ 0์œผ๋กœ ๋๋‚  ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” K-1์ž๋ฆฌ๊ฐ€ 0์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ์™€ K-1์ด 1๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ ํ•ฉ์นœ๊ฑฐ
    // Long long ์จ์ฃผ๊ธฐ!!
    int N;
    cin >> N;
    binary(N);
    cout << dp[N][0]+dp[N][1<< endl;
}
cs

 

1. 0์œผ๋กœ ๋๋‚  ๊ฒฝ์šฐ์—” ๋’ค์— 0๊ณผ 1์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

2. 1๋กœ ๋๋‚  ๊ฒฝ์šฐ์—” ๋’ค์— 0๋ฐ–์— ์˜ค์ง€ ๋ชปํ•œ๋‹ค.

 

์ด ๋‘๊ฐ€์ง€์˜ ์›๋ฆฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , dp์˜ ์žฅ์ ์ธ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋†“์€ ๊ฐ’์„ ํšจ์œจ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ ํ•  ์ค„ ์•ˆ๋‹ค๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

์ฒ˜์Œ์— ์ด ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ, ์—„์ฒญ ๊ตฌ์งˆ๊ตฌ์งˆ(?)ํ•˜๊ฒŒ dp๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋–ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋‘๊ฐ€์ง€์˜ ์›๋ฆฌ๋ฅผ ๊ฑฐ๊พธ๋กœ ์ƒ๊ฐํ•ด๋ณด์ž. ๋‚ด๊ฐ€ ๊ตฌํ•ด์•ผ ํ•˜๋Š” N๋ฒˆ์งธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 0์œผ๋กœ ๋๋‚˜๋Š” ์• ๋“ค์ด๋ž‘ 1๋กœ ๋๋‚˜๋Š” ์• ๋“ค๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋‹ค. 0์œผ๋กœ ๋๋‚˜๋Š” ์• ๋“ค์€ ๋ฐ”๋กœ ์ด์ „์˜ ์• ๊ฐ€ 0์œผ๋กœ ๋๋‚˜๊ฑฐ๋‚˜ 1๋กœ ๋๋‚œ ๊ฒฝ์šฐ๋ฅผ ํ•ฉํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ณ , 1๋กœ ๋๋‚˜๋Š” ์• ๋“ค์€ ์ด์ „์˜ ์• ๊ฐ€ 0์œผ๋กœ ๋๋‚œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ž‘ ๋˜‘๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— ์ด ๋‘˜์„ ํ•ฉ์ณ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ž˜์„œ dp[MAX][2]๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , dp[N][0]์—” N๋ฒˆ์งธ ์ด์นœ์ˆ˜๊ฐ€ 0์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜, ์ฆ‰ N-1๋ฒˆ์งธ ์ด์นœ์ˆ˜๊ฐ€ 0์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ์™€ 1๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ํ•ฉ์ณ์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  dp[N][1]์—” N๋ฒˆ์งธ ์ด์นœ์ˆ˜๊ฐ€ 1๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜, ์ฆ‰ N-1๋ฒˆ์งธ ์ด์นœ์ˆ˜๊ฐ€ 0์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

boj >> 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(c++)  (0) 2020.04.13
boj >> 17070 ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ1  (0) 2020.03.28