From dc61f30f6d5e23f775d5d3e43c6adecc84828e02 Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Mon, 21 Jul 2025 23:26:15 +0900 Subject: [PATCH] =?UTF-8?q?[20250721]=20BOJ=20/=20G5=20/=20=EB=84=B4?= =?UTF-8?q?=EB=AA=A8=EB=84=B4=EB=AA=A8=20(Easy)=20/=20=EC=9D=B4=EC=9D=B8?= =?UTF-8?q?=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...252\250\353\204\264\353\252\250 (Easy).md" | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 "LiiNi-coder/202507/21 BOJ \353\204\264\353\252\250\353\204\264\353\252\250 (Easy).md" diff --git "a/LiiNi-coder/202507/21 BOJ \353\204\264\353\252\250\353\204\264\353\252\250 (Easy).md" "b/LiiNi-coder/202507/21 BOJ \353\204\264\353\252\250\353\204\264\353\252\250 (Easy).md" new file mode 100644 index 00000000..717911af --- /dev/null +++ "b/LiiNi-coder/202507/21 BOJ \353\204\264\353\252\250\353\204\264\353\252\250 (Easy).md" @@ -0,0 +1,63 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +//TIP 코드를 실행하려면 을(를) 누르거나 +// 에디터 여백에 있는 아이콘을 클릭하세요. +public class Main { + private static BufferedReader br; + private static int answer; + private static int[][] map; + private static int m; + private static int n; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + var temp = br.readLine().split(" "); + n = Integer.parseInt(temp[0]); + m = Integer.parseInt(temp[1]); + map = new int[n][m]; + answer = 0; + dfs(0); + System.out.println(answer); + br.close(); + } + + private static void dfs(int idx) { + //종료 + if(idx == n*m){ + answer++; + return; + } + //idx에 네모 없는 것으로 진행 + int r = idx / m; + int c = idx % m; + map[r][c] = 0; + dfs(idx+1); + + if(isValid(idx)){ + map[r][c] = 1; + dfs(idx+1); + } + } + + private static boolean isValid(int idx) { + int r = idx/m; + int c = idx% m; + boolean isFirstCol = c == 0; + if(isFirstCol) return true; + if(r == 0){ + return true; + } + boolean leftDown = (map[r][c-1] == 1); + boolean leftUp = (map[r-1][c-1] == 1); + boolean rightUp = (map[r-1][c] == 1); + if(leftDown && leftUp && rightUp){ + return false; + }else{ + return true; + } + } +} +```