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());
}
}
}