https://www.acmicpc.net/problem/16954
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.StringTokenizer;
class Pos {
int t;
int x;
int y;
public Pos(int t,int x, int y) {
super();
this.t = t;
this.x = x;
this.y = y;
}
}
public class Main_bj_16954_움직이는미로탈출{
static int ans = 0;
static char[][] map = new char[8][8];
static boolean[][][] visit = new boolean[9][8][8];
static int[] dx = { 0, 0, 1, -1, 1, 1, -1, -1, 0 };
static int[] dy = { 1, -1, 0, 0, -1, 1, -1, 1, 0 };
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 8; i++) {
map[i] = br.readLine().toCharArray();
}
Queue<Pos> q=new LinkedList<Pos>();
q.offer(new Pos(0,7,0));
visit[0][7][0]=true;
while(!q.isEmpty()) {
Pos p=q.poll();
if(p.x==0 && p.y==7) {
System.out.println(1);
System.exit(0);
}
for(int i=0; i<9; i++) {
int nx=p.x+dx[i];
int ny=p.y+dy[i];
int nt=Math.min(p.t+1, 8);
if(nx<0||ny<0||nx>=8||ny>=8)
continue;
if(nx-p.t>=0 && map[nx-p.t][ny]=='#')continue;
if(nx-p.t-1>=0 && map[nx-p.t-1][ny]=='#')continue;
if(visit[nt][nx][ny]==false) {
visit[nt][nx][ny]=true;
q.offer(new Pos(nt,nx,ny));
}
}
}
System.out.println(0);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 1405] 미친 로봇(JAVA/C++) (0) | 2020.03.30 |
---|---|
[백준 9237] 이장님 초대(JAVA) (0) | 2020.03.29 |
[백준 5567] 결혼식(JAVA) (0) | 2020.03.26 |
[백준 9466] 텀 프로젝트(JAVA/C++) (0) | 2020.03.25 |
[백준 14405] 피카츄(JAVA) (0) | 2020.03.24 |
댓글