diff --git a/src/week6/monkeyWhoWannabeHorse1600/Main.java b/src/week6/monkeyWhoWannabeHorse1600/Main.java index 51b6856..fecbbd2 100644 --- a/src/week6/monkeyWhoWannabeHorse1600/Main.java +++ b/src/week6/monkeyWhoWannabeHorse1600/Main.java @@ -1,4 +1,128 @@ package week6.monkeyWhoWannabeHorse1600; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Deque; +import java.util.LinkedList; +import java.util.Queue; +import java.util.StringTokenizer; +import java.util.concurrent.DelayQueue; + public class Main { + //원숭이 사방 상하좌우 + static int[] mx= {-1,1,0,0}; + static int[] my = {0,0,-1,1}; + //말 움직임 + static int[] hx= {1,2,2,1,-1,-2,-2,-1}; + static int[] hy = {-2,-1,1,2,2,1,-1,-2}; + static int h,w,k; + static boolean[][][] visited; + public static void main(String[] args) throws NumberFormatException, IOException { + BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); + StringTokenizer st; + + + k = Integer.parseInt(br.readLine()); // 말처럼 이동할 수 있는 수 + + st = new StringTokenizer(br.readLine()); + w = Integer.parseInt(st.nextToken()); // 가로 + h = Integer.parseInt(st.nextToken()); // 세로 + + map = new int[h][w]; + + for(int i=0;i que = new LinkedList(); + que.add(new Monkey(0, 0, 0, k)); + visited[0][0][k] = true; + + while(!que.isEmpty()) { + Monkey temp = que.poll(); + + // 목적지에 도착할 경우 원숭의 동작 최솟값 출력 + if(temp.x== h-1 && temp.y == w-1) { + return temp.monkeyCnt; + } + + + //원숭이가 말처럼 움직일 수 있다면 (횟수 남음) + if(temp.k > 0) { + //이동 ~ + for(int d=0;d<8;d++) { + int hdx = temp.x + hx[d]; + int hdy = temp.y + hy[d]; + + //범위 체크랑 장애물 체크 + if(hdx>=0 && hdx=0 && hdy=0 && mdx=0 && mdy