
접근 방법
- 3 이상의 정수가 쓰여진 칸은 무조건 구역 밖으로 떨어지므로 값이 1 또는 2인 칸으로만 진행한다.
- 배열의 i, j 인덱스를 파라미터로 받는 재귀함수를 호출하여 탐색한다.
- 도달할 수 있다면 HaruHaru 출력. 도달할 수 없다면 Hing 출력
책임 분배
- 입력을 받고 결과를 출력하는 main 메서드
- 칸을 탐색하는 search 메서드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Silver4_16173_점프왕쩰리Small {
static int[][] square;
static boolean isSuccess = false;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
square = new int[t][t];
for (int i = 0; i < t; i++) {
String[] input = br.readLine().split(" ");
for (int j = 0; j < t; j++) {
square[i][j] = Integer.parseInt(input[j]);
}
}
search(0, 0);
if(isSuccess) {
System.out.println("HaruHaru");
} else {
System.out.println("Hing");
}
}
static void search(int i, int j) {
if(isSuccess) {
return;
}
if(i >= square.length || j >= square.length) {
return;
}
int jump = square[i][j];
if(jump == -1) {
isSuccess = true;
return;
}
if (jump >= square.length || jump == 0) {
return;
}
int nextI = i + jump;
int nextJ = j + jump;
if(nextI < square.length) {
search(nextI, j);
}
if(nextJ < square.length) {
search(i, nextJ);
}
}
}