From 46b9a3929d6a4d6e330b4d5780d4d4f59fd052fc Mon Sep 17 00:00:00 2001 From: monsileI Date: Tue, 12 Jul 2022 21:23:43 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EA=B2=8C=20=EB=8C=80=EC=B2=B4=20?= =?UTF-8?q?=EC=99=9C=20=EC=95=88=EB=90=98=EB=8A=94=EA=B2=A8=20=E3=85=A0?= =?UTF-8?q?=E3=85=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ssafy_avanced_study/no_1226.java | 89 +++++++++---------- .../src/ssafy_avanced_study/no_1247.java | 23 +++++ .../src/ssafy_avanced_study/no_1249.java | 71 +++++++-------- 3 files changed, 99 insertions(+), 84 deletions(-) create mode 100644 Basic_Of_Algorithm/src/ssafy_avanced_study/no_1247.java diff --git a/Basic_Of_Algorithm/src/ssafy_avanced_study/no_1226.java b/Basic_Of_Algorithm/src/ssafy_avanced_study/no_1226.java index 69eace5..1874fc5 100644 --- a/Basic_Of_Algorithm/src/ssafy_avanced_study/no_1226.java +++ b/Basic_Of_Algorithm/src/ssafy_avanced_study/no_1226.java @@ -7,6 +7,9 @@ public class no_1226 { + static int answer = 0; + static int [][] move = {{1,0},{0,1},{-1,0},{0,-1}}; + public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); @@ -25,72 +28,60 @@ public static void main(String[] args) throws Exception { q.add(new int[] {0,0}); + int []start = new int[2]; + int []end = new int[2]; + for(int i=0;i<16;i++) { String str =br.readLine(); for(int j=0;j<16;j++) { map[i][j] = Integer.parseInt(""+str.charAt(j)); + if(map[i][j]==2) { + start[0] = i; + start[1] = j; + }else if(map[i][j]==3) { + end[0] = i; + end[1] = j; + } } } + + int[][]temp = new int[16][16]; - temp[0][0] = 0; - int [][] move = {{1,0},{0,1},{-1,0},{0,-1}}; + temp[start[0]][start[1]] = 0; - int answer = Integer.MAX_VALUE; - int answerI = 0; - int answerJ = 0; - for(int i=0;i<16;i++) { - for(int j=0;j<16;j++) { - if(map[i][j]==2) { - temp[i][j] = 0; - q.add(new int[] {i,j}); - }else if(map[i][j]==3) { - answerI = i; - answerJ = j; - } - - } - } + dfs(start[0],start[1],temp,end,map); - System.out.println(q.poll()[0]); - System.out.println(q.poll()[1]); - while(!q.isEmpty()) { - - int [] cur = q.poll(); - int i = cur[0]; - int j = cur[1]; - - for(int d=0;d<4;d++) { - - int newI = i + move[d][0]; - int newJ = j + move[d][1]; - - - if(newI<0||newJ<0||15=answer) return; + + int [][] move = {{1,0},{0,1},{-1,0},{0,-1}}; + + + if(i==size-1 && j ==size-1) { + answer = Math.min(answer, temp[size-1][size-1]); + return; + } + + for(int d=0;d<4;d++) { + + int newI = i + move[d][0]; + int newJ = j + move[d][1]; + + if(newI<0||newJ<0||size-1