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

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

boj >> 17070 ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ1

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
 
const int MAX = 17;
 
int N;
int arr[MAX][MAX];
int dp[MAX][MAX][3];//dp table, 0:๊ฐ€๋กœ, 1:์„ธ๋กœ, 2:๋Œ€๊ฐ์„ 
 
int main(){
    scanf("%d"&N);
    //cin >> N;
    //1. map ๋งŒ๋“ค์–ด์ฃผ๊ธฐ. 
    for(int i=0; i<N; i++)
        for(int j=0; j<N; j++)
            scanf("%d"&arr[i][j]);
 
    //2. ์ฒ˜์Œ ๋†“์—ฌ์ง„ ์œ„์น˜, ์ขŒํ‘œ์ƒ์—์„œ 1์„ ๋„ฃ์–ด์ฃผ๊ณ , ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ด์ค€๋‹ค. 
    dp[0][1][0= 1;
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            if(arr[i][j]) {    continue;   }
            for(int n=0; n<3; n++){
                //2-1. ์ง€๊ธˆ ์ƒํƒœ์—์„œ ๊ฐ€๋กœ๋กœ ์›€์ง์ผ ๊ฒฝ์šฐ(๋น„์–ด์•ผ ํ•˜๋Š” ๊ณณ์ด ๋น„์–ด์•ผ+ํ˜„์žฌ๊ฐ€ ์„ธ๋กœ(1)์ด๋ฉด ์ด ๊ฒฝ์šฐ ์ œ์™ธ)
                if(!arr[i][j+1&& n!=1){   
                    dp[i][j+1][0+= dp[i][j][n];
                }
                //2-2. ์ง€๊ธˆ ์ƒํƒœ์—์„œ ์„ธ๋กœ๋กœ ์›€์ง์ผ ๊ฒฝ์šฐ(ํ˜„์žฌ๊ฐ€ ๊ฐ€๋กœ(0)์ด๋ฉด ์ด ๊ฒฝ์šฐ ์ œ์™ธ)
                if(!arr[i+1][j] && n!=0){
                    dp[i+1][j][1+= dp[i][j][n];
                }
                //2-3. ์ง€๊ธˆ ์ƒํƒœ์—์„œ ๋Œ€๊ฐ์„ ์œผ๋กœ ์›€์ง์ผ ๊ฒฝ์šฐ 
                if(arr[i+1][j+1]+arr[i][j+1]+arr[i+1][j+1]==0){
                    dp[i+1][j+1][2+= dp[i][j][n];
                }
            }
        }
    }
 
    printf("%d\n", dp[N-1][N-1][0]+dp[N-1][N-1][1]+dp[N-1][N-1][2]);
    //int result = dp[N-1][N-1][0]+dp[N-1][N-1][1]+dp[N-1][N-1][2];
    //cout << result;
    return 0;
}
cs

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

boj >> 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(c++)  (0) 2020.04.13
boj >> 2193 ์ด์นœ์ˆ˜  (0) 2020.03.29