본문 바로가기

Coding Test

백준 점프왕 쩰리 (Large)(16174)

 

간단한 DFS문제 풀었습니다.

 

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

 

16174번: 점프왕 쩰리 (Large)

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

www.acmicpc.net

 

오른쪽, 아래로 이동하면서 마지막 칸에 도달할 수 있는지 여부만 체크하면된다. 

가는길에 방문 여부만 관리하면 된다.

 

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

public class Main {

    static int N;
    static boolean[][] visited;
    static boolean answer;

    public static void main(String[] args) throws IOException {
        solution();
    }

    public static void solution() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());

        int[][] map = new int[N][N];
        visited = new boolean[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());
            }
        }

        dfs(map, 0, 0);

        if (answer) {
            System.out.println("HaruHaru");
        } else {
            System.out.println("Hing");
        }

    }


    public static void dfs(int[][] map, int x, int y) {
        visited[x][y] = true;

        int p = map[x][y];

        if (x == N-1 && y == N-1) {
            answer = true;
        }

        if (x + p < N && !visited[x + p][y]) {
            dfs(map, x + p, y);
        }

        if (y + p < N && !visited[x][y + p]) {
            dfs(map, x, y + p);
        }


    }

}

 

'Coding Test' 카테고리의 다른 글

백준 스타트와 링크(14889)  (1) 2024.03.23
백준 나이트의 이동(7562)  (1) 2024.03.20
백준 보드점프(3372)  (2) 2024.03.17
백준 블랙홀과 소행성(29755)  (0) 2024.03.14
백준 국기 색칠하기(30702)  (0) 2024.03.13