일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MariaDB
- 검색 API
- 컴퓨터공학기초
- RESTful
- 젠킨스
- 알고리즘다지기프로젝트
- 백준
- 페이징
- 2375
- 빗버킷
- WebFlux
- 11053
- 알고리즘
- 자바
- bitbucket
- while
- Reactive stream
- DP
- Programming
- 스프링 번역
- 도커
- jenkins
- search api
- event_scheduler
- 다이나믹프로그래밍
- Today
- Total
쑥로그
JAVA 백준 2178번 문풀 본문
package b_2178;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Maze {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[][] maze = new int[n][m];
String temp = sc.nextLine();
for (int i = 0; i < n; i++) {
String s = sc.nextLine();
String[] sArray = s.split("");
for (int j = 0; j < m; j++) {
maze[i][j] = Integer.parseInt(sArray[j]);
}
}
sc.close();
System.out.println(searchExit(maze));
}
private static int searchExit(int[][] maze) {
boolean[][] visited = new boolean[maze.length][maze[0].length];
for (int i = 0; i < visited.length; i++) {
Arrays.fill(visited[i], false);
}
visited[0][0] = true;
Queue<Dot> q = new LinkedList<Dot>();
int[] xDist = { 1, -1, 0, 0 };
int[] yDist = { 0, 0, 1, -1 };
q.offer(new Dot(0, 0));
int level = 0;
w1: while (!q.isEmpty()) {
Dot dot = q.poll();
for (int i = 0; i < xDist.length; i++) {
int movedX = dot.getX() + xDist[i];
int movedY = dot.getY() + yDist[i];
if (movedX < 0 || movedY < 0 || movedX > maze.length - 1 || movedY > maze[0].length - 1) {
continue;
}
//System.out.println(movedX + ", " + movedY);
Dot movedDot = new Dot(movedX, movedY);
if (maze[movedX][movedY] == 1) {
if (visited[movedX][movedY] == false) {
movedDot.setSum((dot.getSum() + 1));
q.offer(movedDot);
visited[movedX][movedY] = true;
}
}
if (movedX == maze.length - 1 && movedY == maze[0].length - 1) {
level = movedDot.getSum();
//System.out.println("==============level : " + level);
break w1;
}
}
}
return level;
}
public static class Dot {
int x;
int y;
int sum = 1;
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public Dot(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
}
'프로그래밍' 카테고리의 다른 글
event_scheduler disabled (0) | 2019.09.04 |
---|---|
도커의 2375 포트와 connection refused (0) | 2019.09.04 |
빗버킷 한 레파지토리에서 디렉토리 서브 프로젝트 별로 따로 빌드하기 (0) | 2019.09.04 |
Spring boot oauth 개발자 가이드 번역 (0) | 2019.09.03 |
빗버킷과 젠킨스 연동하고, 도커파일 빌드배포까지 (0) | 2019.08.29 |