반응형
풀이
- 뭔가 코드를 더 간소화하고 싶었는데, 뭔가 쉽지 않아서
- 아래 코드와 같이 오른쪽으로 가는거, 아래쪽으로 가는거를
- 조건식을 통해 작성
- 물론... 좀 유사해 보이는 코드라서 찝찝하긴 하지만
- 머리가 잘 안돌아가는 듯...
import java.io.*;
import java.util.*;
public class _16173 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
String result = "Hing";
int n = Integer.parseInt(br.readLine());
int[][] mtx = new int[n][n];
boolean[][] visit = new boolean[n][n];
for (int i=0; i<n; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<n; j++) mtx[i][j] = Integer.parseInt(st.nextToken());
}
// bfs
Deque<List<Integer>> deque = new ArrayDeque<>(Arrays.asList(new ArrayList<>(Arrays.asList(0,0))));
visit[0][0] = true;
while (!deque.isEmpty()) {
List<Integer> now = deque.pollFirst();
if (mtx[now.get(0)][now.get(1)]==-1) {
result = "HaruHaru";
break;
}
int mtx_num = mtx[now.get(0)][now.get(1)];
int[] li = {now.get(0),now.get(1)};
for (int i=0; i<2; i++) {
int num = li[i]+mtx_num;
if (0<num && num<n) {
if (i==0 && !visit[num][now.get(1)]) {
deque.add(new ArrayList<>(Arrays.asList(num,now.get(1))));
visit[num][now.get(1)] = true;
}
else if (i==1 && !visit[now.get(0)][num]) {
deque.add(new ArrayList<>(Arrays.asList(now.get(0),num)));
visit[now.get(0)][num] = true;
}
}
}
}
System.out.println(result);
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1388번] 바닥 장식 (1) | 2024.10.11 |
---|---|
[백준, 자바, 7562번] 나이트의 이동 (0) | 2024.10.10 |
[백준, 자바, 11403번] 경로 찾기 (0) | 2024.10.10 |
[프로그래머스, 자바, 258712번] 가장 많이 받은 선물 (0) | 2024.10.01 |
[프로그래머스, 자바, 181923번] 수열과 구간 쿼리 2 (0) | 2024.10.01 |