From c7b9bba350d9e2ddbc52520edc09826e1a4fb2fc Mon Sep 17 00:00:00 2001 From: lkhyun <102892446+lkhyun@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:00:52 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[20250317]=20BOJ=20=EA=B3=A8=EB=93=9C=202?= =?UTF-8?q?=20=ED=86=B5=EB=82=98=EB=AC=B4=20=EC=98=AE=EA=B8=B0=EA=B8=B0=20?= =?UTF-8?q?=EC=9D=B4=EA=B0=95=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4 \354\230\256\352\270\260\352\270\260.md" | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 "lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" diff --git "a/lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" "b/lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" new file mode 100644 index 00000000..54facd77 --- /dev/null +++ "b/lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" @@ -0,0 +1,127 @@ +```java +import java.util.*; +import java.io.*; +class Node{ + int i; + int j; + int turn; + int count; + + Node(int i,int j,int turn,int count){ + this.i = i; + this.j = j; + this.turn = turn; + this.count = count; + } +} +public class Algo3_이강현 { + + static int N; + static char[][] grid; + static int[] di = {0,-1,0,0,1}; + static int[] dj = {0,0,-1,1,0}; + static int min = Integer.MAX_VALUE; + + public static void main(String[] args)throws Exception{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + N = Integer.parseInt(br.readLine()); + grid = new char[N][N]; + + int starti = 0; + int startj = 0; + int turn = 0; // 0은 가로, 1은 세로 + for(int i=0;i q = new ArrayDeque<>(); + // 3차원 방문 배열: visited[i][j][0]는 가로, visited[i][j][1]은 세로 상태 + boolean[][][] visited = new boolean[N][N][2]; + + q.add(new Node(starti, startj, turn, 0)); + visited[starti][startj][turn] = true; + + while(!q.isEmpty()) { + Node cur = q.poll(); + + // 종료 조건: 목표 'E'에 도달한 경우 + if(cur.turn == 0) { // 가로일 때 + if(cur.j-1 >= 0 && cur.j+1 < N) { + if(grid[cur.i][cur.j-1] == 'E' && grid[cur.i][cur.j] == 'E' && grid[cur.i][cur.j+1] == 'E') + min = Math.min(min, cur.count); + } + } else { // 세로일 때 + if(cur.i-1 >= 0 && cur.i+1 < N) { + if(grid[cur.i-1][cur.j] == 'E' && grid[cur.i][cur.j] == 'E' && grid[cur.i+1][cur.j] == 'E') + min = Math.min(min, cur.count); + } + } + + for(int k = 0; k < 5; k++) { + int newi = cur.i + di[k]; + int newj = cur.j + dj[k]; + if(cur.turn == 0) { // 가로 상태일 때 + if(newi < 0 || newi >= N || newj - 1 < 0 || newj + 1 >= N) continue; + if(grid[newi][newj] == '1' || grid[newi][newj-1] == '1' || grid[newi][newj+1] == '1') continue; + if(k == 0) { // 회전: 가로 -> 세로 + if(newi - 1 < 0 || newi + 1 >= N) continue; + if(grid[newi-1][newj-1]=='1' || grid[newi-1][newj]=='1' || grid[newi-1][newj+1]=='1' || + grid[newi+1][newj-1]=='1' || grid[newi+1][newj]=='1' || grid[newi+1][newj+1]=='1') + continue; + if(!visited[newi][newj][1]){ + q.add(new Node(newi, newj, 1, cur.count + 1)); + visited[newi][newj][1] = true; + } + } else if(!visited[newi][newj][cur.turn]) { // 단순 이동 + q.add(new Node(newi, newj, cur.turn, cur.count + 1)); + visited[newi][newj][cur.turn] = true; + } + + } else { // 세로 상태일 때 + if(newi - 1 < 0 || newi + 1 >= N || newj < 0 || newj >= N) continue; + if(grid[newi][newj] == '1' || grid[newi-1][newj] == '1' || grid[newi+1][newj] == '1') continue; + if(k == 0) { // 회전: 세로 -> 가로 + if(newj - 1 < 0 || newj + 1 >= N) continue; + if(grid[newi-1][newj-1]=='1' || grid[newi][newj-1]=='1' || grid[newi+1][newj-1]=='1' || + grid[newi-1][newj+1]=='1' || grid[newi][newj+1]=='1' || grid[newi+1][newj+1]=='1') + continue; + if(!visited[newi][newj][0]){ + q.add(new Node(newi, newj, 0, cur.count + 1)); + visited[newi][newj][0] = true; + } + } else if(!visited[newi][newj][cur.turn]) { // 단순 이동 + q.add(new Node(newi, newj, cur.turn, cur.count + 1)); + visited[newi][newj][cur.turn] = true; + } + } + } + } + } + +} + +``` From 9290e245d5334028a3da3cc7d70f22105c064182 Mon Sep 17 00:00:00 2001 From: lkhyun <102892446+lkhyun@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:02:07 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[20250317]=20BOJ=20/=20=EA=B3=A8=EB=93=9C2?= =?UTF-8?q?=20/=20=ED=86=B5=EB=82=98=EB=AC=B4=20=EC=98=AE=EA=B8=B0?= =?UTF-8?q?=EA=B8=B0=20/=20=EC=9D=B4=EA=B0=95=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" => "lkhyun/202503/17 BOJ \352\263\250\353\223\2342 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" (100%) diff --git "a/lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" "b/lkhyun/202503/17 BOJ \352\263\250\353\223\2342 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" similarity index 100% rename from "lkhyun/202503/17 BOJ \352\263\250\353\223\234 2 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md" rename to "lkhyun/202503/17 BOJ \352\263\250\353\223\2342 \355\206\265\353\202\230\353\254\264 \354\230\256\352\270\260\352\270\260.md"