일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- feign
- PL/SQL
- Jenkins
- MVC
- 데이터베이스
- db
- retry
- DP
- 자바
- 알고리즘
- 클라우드
- 디자인 패턴
- 오라클
- Spring Boot
- SQL
- golang
- Spring Cloud Feign
- 운영체제
- 쿼리
- Intellj
- 백준
- Spring Cloud
- aws
- 자료구조
- Spring
- 페이징
- Kafka
- MST
- JPA
- 코딩
- Today
- Total
justgo_developer
[JAVA]백준 2178 미로탐색 본문
import java.util.*;
public class Main {
static int N;
static int M;
static int [][] maze = new int[100][100];
static boolean [][] visit = new boolean[100][100];
static int[] dx = {0,1,0,-1};
static int[] dy = {1,0,-1,0};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
for(int i=0;i<N;i++){
String str = sc.next();
for(int j=0;j<str.length();j++){
maze[i][j] = str.charAt(j)-'0';
}
}
maze[0][0]=2;
bfs(0,0);
System.out.print(maze[N-1][M-1]-1);
}
public static void bfs(int n, int m){
Queue<Integer> qx = new LinkedList<Integer>();
Queue<Integer> qy = new LinkedList<Integer>();
qx.add(n);
qy.add(m);
while(!qx.isEmpty() && !qy.isEmpty()){
n = qx.poll();
m = qy.poll();
visit[n][m]=true;
for(int i=0;i<4;i++){
int nx = n + dx[i];
int ny = m + dy[i];
if(nx>=0 && ny>=0 && nx<N && ny<M){
if(maze[nx][ny]==1 && visit[nx][ny]==false){
qx.add(nx);
qy.add(ny);
visit[nx][ny]=true;
maze[nx][ny]= maze[n][m]+1;
}
}
}
}
}
}
'IT > 코딩 문제 풀이' 카테고리의 다른 글
[JAVA] 백준 15657 N과 M (8) (0) | 2018.09.10 |
---|---|
[JAVA] 백준 1012 유기농배추 (0) | 2018.01.10 |
[JAVA] 백준 2161 카드1 (0) | 2018.01.03 |
[JAVA] 백준 1547 공 (0) | 2018.01.03 |
[JAVA] 백준 1057 토너먼트 (0) | 2018.01.01 |