[알고리즘] 백준 - 점프왕 쩰리 (Large)

June·2021년 6월 2일
0

알고리즘

목록 보기
219/260

백준 - 점프왕 쩰리 (Large)

내 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;


public class baekjoon_16174 {

    static int N;
    static int[][] graph, visited;
    static int[] dx = {1, 0};
    static int[] dy = {0, 1};

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        graph = new int[N][N];
        visited = new int[N][N];

        for (int i = 0; i < N; i++) {
            String[] inputs = br.readLine().split(" ");
            for (int j = 0; j < N; j++) {
                graph[i][j] = Integer.parseInt(inputs[j]);
            }
        }
        System.out.println(bfs(0, 0));


    }

    private static String bfs(int i, int j) {
        visited[i][j] = 1;
        Queue<int[]> queue = new LinkedList<>();
        queue.add(new int[]{i, j});

        while (!queue.isEmpty()) {
            int[] poll = queue.poll();
            int y = poll[0];
            int x = poll[1];
            if (graph[y][x] == -1) {
                return "HaruHaru";
            }

            for (int k = 0; k < 2; k++) {
                int ny = y + (dy[k] * graph[y][x]);
                int nx = x + (dx[k] * graph[y][x]);
                if (0 <= ny && ny < N && 0 <= nx && nx < N) {
                    if (visited[ny][nx] == 0) {
                        visited[ny][nx] = 1;
                        queue.add(new int[]{ny, nx});
                    }
                }
            }
        }
        return "Hing";
    }
}

문제 오류인지 모르겠지만, 성공 조건을 y==N-1 && x == N-1로 하니 실패했다. 결국 오른쪽 가장 아래 위치에 도착하는 것이니 같은 것인데 실패해서 이상했다.

0개의 댓글