PS/백준

백준 - 점프왕 쩰리 (Small) - Java

팡세영 2022. 8. 19. 06:12

 

https://www.acmicpc.net/problem/16173

 

16173번: 점프왕 쩰리 (Small)

쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로,  (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다.

www.acmicpc.net


[문제 해결]

저는 DFS를 이용한 완전 탐색으로 문제를 해결 하는데,

BFS로도 문제를 해결하실 수 있습니다.


 

[java]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    private static int[][] map;
    private static boolean check = false;
    private static int n;

    public static void main(String[] args) throws IOException {
        input();
        dfs(0,0,n);

        if(check) System.out.println("HaruHaru");
        else System.out.println("Hing");

    }
    private static void dfs(int x, int y, int last){
        if(map[x][y] == 0) return;

        if(map[x][y] == -1){
            check = true;
            return;
        }

        // 아래
        if(x + map[x][y] >= 0 && x + map[x][y] < last)
            dfs(x + map[x][y], y,  last);

        // 오른족
        if(y + map[x][y] >= 0 && y + map[x][y] < last)
            dfs(x, y + map[x][y], last);

    }


    private static void input() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        n = Integer.parseInt(br.readLine());
        map = new int[n][n];

        for(int i=0; i<n; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            for(int j=0; j<n; j++) map[i][j] = Integer.parseInt(st.nextToken());
        }

    }

}