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