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

[ ๋ฐฑ์ค€ / BOJ 17070 ] ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 1

KIMHYEYUN 2021. 9. 15. 22:45
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/17070

 

17070๋ฒˆ: ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 1

์œ ํ˜„์ด๊ฐ€ ์ƒˆ ์ง‘์œผ๋กœ ์ด์‚ฌํ–ˆ๋‹ค. ์ƒˆ ์ง‘์˜ ํฌ๊ธฐ๋Š” N×N์˜ ๊ฒฉ์žํŒ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นธ์€ (r, c)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ r์€ ํ–‰์˜ ๋ฒˆํ˜ธ, c๋Š” ์—ด์˜

www.acmicpc.net

๋ฌธ์ œ


์œ ํ˜„์ด๊ฐ€ ์ƒˆ ์ง‘์œผ๋กœ ์ด์‚ฌํ–ˆ๋‹ค. ์ƒˆ ์ง‘์˜ ํฌ๊ธฐ๋Š” N×N์˜ ๊ฒฉ์žํŒ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นธ์€ (r, c)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ r์€ ํ–‰์˜ ๋ฒˆํ˜ธ, c๋Š” ์—ด์˜ ๋ฒˆํ˜ธ์ด๊ณ , ํ–‰๊ณผ ์—ด์˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์นธ์€ ๋นˆ ์นธ์ด๊ฑฐ๋‚˜ ๋ฒฝ์ด๋‹ค.

์˜ค๋Š˜์€ ์ง‘ ์ˆ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ํŒŒ์ดํ”„ ํ•˜๋‚˜๋ฅผ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•œ๋‹ค. ํŒŒ์ดํ”„๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ์ด๊ณ , 2๊ฐœ์˜ ์—ฐ์†๋œ ์นธ์„ ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ์ด๋‹ค.

ํŒŒ์ดํ”„๋Š” ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ๋ฐฉํ–ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํŒŒ์ดํ”„๋Š” ๋งค์šฐ ๋ฌด๊ฒ๊ธฐ ๋•Œ๋ฌธ์—, ์œ ํ˜„์ด๋Š” ํŒŒ์ดํ”„๋ฅผ ๋ฐ€์–ด์„œ ์ด๋™์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ๋ฒฝ์—๋Š” ์ƒˆ๋กœ์šด ๋ฒฝ์ง€๋ฅผ ๋ฐœ๋ž๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ดํ”„๊ฐ€ ๋ฒฝ์„ ๊ธ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ์ฆ‰, ํŒŒ์ดํ”„๋Š” ํ•ญ์ƒ ๋นˆ ์นธ๋งŒ ์ฐจ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

ํŒŒ์ดํ”„๋ฅผ ๋ฐ€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์€ ์ด 3๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, →, โ†˜, ↓ ๋ฐฉํ–ฅ์ด๋‹ค. ํŒŒ์ดํ”„๋Š” ๋ฐ€๋ฉด์„œ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํšŒ์ „์€ 45๋„๋งŒ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฏธ๋Š” ๋ฐฉํ–ฅ์€ ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์ด์–ด์•ผ ํ•œ๋‹ค.

ํŒŒ์ดํ”„๊ฐ€ ๊ฐ€๋กœ๋กœ ๋†“์—ฌ์ง„ ๊ฒฝ์šฐ์— ๊ฐ€๋Šฅํ•œ ์ด๋™ ๋ฐฉ๋ฒ•์€ ์ด 2๊ฐ€์ง€, ์„ธ๋กœ๋กœ ๋†“์—ฌ์ง„ ๊ฒฝ์šฐ์—๋Š” 2๊ฐ€์ง€, ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ๋†“์—ฌ์ง„ ๊ฒฝ์šฐ์—๋Š” 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ํŒŒ์ดํ”„๊ฐ€ ๋†“์—ฌ์ง„ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๊ณ , ๊ผญ ๋นˆ ์นธ์ด์–ด์•ผ ํ•˜๋Š” ๊ณณ์€ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜์–ด์ ธ ์žˆ๋‹ค.

๊ฐ€๋กœ

์„ธ๋กœ

๋Œ€๊ฐ์„ 

๊ฐ€์žฅ ์ฒ˜์Œ์— ํŒŒ์ดํ”„๋Š” (1, 1)์™€ (1, 2)๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๊ณ , ๋ฐฉํ–ฅ์€ ๊ฐ€๋กœ์ด๋‹ค. ํŒŒ์ดํ”„์˜ ํ•œ์ชฝ ๋์„ (N, N)๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.

 

์ž…๋ ฅ


์ฒซ์งธ ์ค„์— ์ง‘์˜ ํฌ๊ธฐ N(3 ≤ N ≤ 16)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ง‘์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋นˆ ์นธ์€ 0, ๋ฒฝ์€ 1๋กœ ์ฃผ์–ด์ง„๋‹ค. (1, 1)๊ณผ (1, 2)๋Š” ํ•ญ์ƒ ๋นˆ ์นธ์ด๋‹ค.

์ถœ๋ ฅ


์ฒซ์งธ ์ค„์— ํŒŒ์ดํ”„์˜ ํ•œ์ชฝ ๋์„ (N, N)์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” ํ•ญ์ƒ 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

ํ’€์ด


https://hyeyun.tistory.com/entry/๋ฐฑ์ค€-BOJ-17069-ํŒŒ์ดํ”„-์˜ฎ๊ธฐ๊ธฐ-2

 

[๋ฐฑ์ค€ / BOJ 17069] ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 2

https://www.acmicpc.net/problem/17069 17069๋ฒˆ: ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 2 ์œ ํ˜„์ด๊ฐ€ ์ƒˆ ์ง‘์œผ๋กœ ์ด์‚ฌํ–ˆ๋‹ค. ์ƒˆ ์ง‘์˜ ํฌ๊ธฐ๋Š” N×N์˜ ๊ฒฉ์žํŒ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นธ์€ (r,

hyeyun.tistory.com

 

ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 2 ์™€ ํ’€์ด๊ฐ€ ๋™์ผํ•˜๋‹ค. 2๋ฅผ ๋จผ์ € ํ’€์–ด์„œ ใ…Žใ…Ž... ๐ŸคŸ

 

์ฝ”๋“œ


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main_BOJ_17070_ํŒŒ์ดํ”„์˜ฎ๊ธฐ๊ธฐ1 {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer;

        int N = Integer.parseInt(br.readLine());
        int[][] house = new int[N+1][N+1];
        int[][][] DP = new int[N+1][N+1][3];
        // 0 : ๊ฐ€๋กœ, 1 : ์„ธ๋กœ, 2 : ๋Œ€๊ฐ์„ 

        for(int i = 1; i < N+1 ; i++){
            stringTokenizer = new StringTokenizer(br.readLine());
            for(int j = 1; j < N+1; j++){
                house[i][j] = Integer.parseInt(stringTokenizer.nextToken());
            }
        }

        DP[1][2][0] = 1;

        for(int i = 1 ; i <= N ; i++){
            for(int j = 3; j <= N ; j++){
                if(house[i][j] == 0){
                    // ๊ฐ€๋กœ
                    DP[i][j][0] = DP[i][j-1][0] + DP[i][j-1][2];
                    // ์„ธ๋กœ
                    DP[i][j][1] = DP[i-1][j][1] + DP[i-1][j][2];

                    // ๋Œ€๊ฐ์„ 
                    if(house[i-1][j] != 1 && house[i][j-1] != 1){
                        DP[i][j][2] = DP[i-1][j-1][0] + DP[i-1][j-1][1] + DP[i-1][j-1][2];
                    }
                }
            }
        }

        System.out.println(DP[N][N][0] + DP[N][N][1] + DP[N][N][2]);
    }
    
}
728x90
๋ฐ˜์‘ํ˜•