Dev.baelanche

[백준 13901] 로봇 본문

Data Structure & Algorithm/PS - JAVA

[백준 13901] 로봇

baelanche 2019. 7. 2. 21:42
반응형

 

문제에서 요구하는대로 로봇을 움직여주면 된다.

필자는 DFS로 풀었다.

 

흠.. 그냥 DFS문제라서 추가적으로 언급할 얘기는 없다;;

 

public class Main {
    
    static int r;
    static int c;
    static int a[][];
    static int d[] = new int[4];
    static int lx;
    static int ly;
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        st = new StringTokenizer(br.readLine());
        r = Integer.parseInt(st.nextToken());
        c = Integer.parseInt(st.nextToken());
        a = new int[r][c];
        
        int k = Integer.parseInt(br.readLine());
        while(k-->0) {
            st = new StringTokenizer(br.readLine());
            int bx = Integer.parseInt(st.nextToken());
            int by = Integer.parseInt(st.nextToken());
            a[bx][by] = 2;
        }
        
        st = new StringTokenizer(br.readLine());
        lx = Integer.parseInt(st.nextToken());
        ly = Integer.parseInt(st.nextToken());
        a[lx][ly] = 1;
        
        st = new StringTokenizer(br.readLine());
        for(int i=0; i<4; i++)
            d[i] = Integer.parseInt(st.nextToken());
        
        dfs(0, 0);
        System.out.println(lx + " " + ly);
    }
    
    public static void dfs(int idx, int cnt) {
        if(cnt == 4) {
            return;
        }
        int x = lx;
        int y = ly;
        if(d[idx] == 1) x -= 1;
        if(d[idx] == 2) x += 1;
        if(d[idx] == 3) y -= 1;
        if(d[idx] == 4) y += 1;
        
        if(0 <= x && x < r && 0 <= y && y < c) {
            if(a[x][y] == 0) {
                lx = x;
                ly = y;
                a[x][y] = 1;
                dfs(idx, 0);
                return;
            }
        }
        
        idx = idx + 1 == 4 ? 0 : idx + 1;
        dfs(idx, cnt+1);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 16510] Predictable Queue  (0) 2019.07.02
[백준 10162] 전자레인지  (0) 2019.07.02
[백준 16505] 별  (0) 2019.07.02
[백준 10158] 개미  (0) 2019.07.02
[백준 2589] 보물섬  (0) 2019.07.02
Comments