import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
class Solution {
static int[] dx = {1, 0, -1, 0};
static int[] dy = {0, 1, 0, -1};
static class Pos {
int x;
int y;
public Pos(int x, int y) {
this.x = x;
this.y = y;
}
}
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int testCase = 1; testCase <= 10; testCase++) {
StringTokenizer st = new StringTokenizer(br.readLine(), "");
st.nextToken();
Queue<Pos> queue = new LinkedList<>();
Pos end = null;
int[][] arr = new int[100][100];
int[][] visited = new int[100][100];
int flag = 0;
for (int i = 0; i < 100; i++) {
st = new StringTokenizer(br.readLine(), "");
char[] chartoint = st.nextToken().toCharArray();
for (int j = 0; j < 100; j++) {
int temp = Character.getNumericValue(chartoint[j]);
arr[i][j] = temp;
if (temp == 2) {
queue.offer(new Pos(i, j));
}
else if (temp == 3) {
end = new Pos(i, j);
}
}
}
while (!queue.isEmpty()) {
Pos pos = queue.poll();
int x = pos.x;
int y = pos.y;
if (x == end.x && y == end.y) {
flag = 1;
break;
}
for (int i = 0; i < 4; i++) {
if ((0 <= x + dx[i] && x + dx[i] < 100 && 0 <= y + dy[i] && y + dy[i] < 100) && arr[x + dx[i]][y + dy[i]] != 1 && visited[x + dx[i]][y + dy[i]] != 1) {
visited[x + dx[i]][y + dy[i]] = 1;
queue.offer(new Pos(x + dx[i], y + dy[i]));
}
}
}
System.out.printf("#%d %d\n", testCase, flag);
}
}
}
미로1과 Solution이 같다. 크기만 달라졌을뿐
Link : https://velog.io/@kwonsc/SWEA-1226-%EB%AF%B8%EB%A1%9C1