슈콩

[BOJ] 백준 17070 파이프 옮기기 1 본문

Algorithms/Baekjoon

[BOJ] 백준 17070 파이프 옮기기 1

shukong 2025. 9. 25. 11:57

[문제]

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

 

 

[소스 코드]

import java.io.*;
import java.util.*;

public class Main {
	static int HOR = 0, VERT = 1, DIAG = 2;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int n = Integer.parseInt(br.readLine());
		int[][] map = new int[n][n];
		for(int i=0;i<n;i++) {
			st = new StringTokenizer(br.readLine());
			for(int j=0;j<n;j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		int[][][] dp = new int[3][n][n];
		dp[HOR][0][1] = 1;
		for(int i=0;i<n;i++) {
			for(int j=2;j<n;j++) {
				if(map[i][j]==1) continue;
				if(j-1>=0 && map[i][j-1]==0) 
					dp[HOR][i][j] += dp[HOR][i][j-1] + dp[DIAG][i][j-1];
				if(i-1>=0 && map[i-1][j]==0) 
					dp[VERT][i][j] += dp[VERT][i-1][j] + dp[DIAG][i-1][j];
				if(i-1>=0 && j-1>=0 && map[i-1][j-1]==0 && map[i-1][j]==0 && map[i][j-1]==0) 
					dp[DIAG][i][j] += dp[DIAG][i-1][j-1] + dp[HOR][i-1][j-1] + dp[VERT][i-1][j-1];
			}
		}
		int result = dp[HOR][n-1][n-1] + dp[VERT][n-1][n-1] + dp[DIAG][n-1][n-1];
		System.out.println(result);
	}
}

'Algorithms > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 17141 연구소 2  (0) 2025.09.25
[BOJ] 백준 17135 캐슬 디펜스  (0) 2025.09.25
[BOJ] 백준 16985 Maaaaaaaaaze  (0) 2025.09.25
[BOJ] 백준 16236 아기 상어  (0) 2025.09.24
[BOJ] 백준 16235 나무 재테크  (4) 2025.09.24