일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래밍 언어론
- react
- 프로그래머스
- 디자인 패턴
- react hook
- useState
- React JS
- 컴퓨터 네트워크
- 자바
- react firebase
- useEffect
- JavaScript
- 프로그래머스 자바
- 리액트
- 장고
- Java
- design pattern
- 코딩테스트 고득점 Kit 완전탐색
- codesandbox
- 자바스크립트
- 백준
- 리액트 훅
- NextJS
- 코틀린
- 프로그래머스 완전탐색
- 자바 공부
- 데이터모델링과마이닝
- websocket
- vanillaJS
- 코딩테스트 고득점 Kit
Archives
- Today
- Total
기록하는 개발자
[백준][JAVA] 2178 : 미로 탐색 본문
728x90
https://www.acmicpc.net/problem/2178
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Queue;
import java.util.LinkedList;
public class Main {
static int[][] miro;
static boolean[][] checked;
static int n, m;
static int[] dx = { -1, 1, 0, 0 };
static int[] dy = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
miro = new int[n][m];
checked = new boolean[n][m];
checked[0][0] = true;
for(int i=0; i<n; i++) {
String s = br.readLine();
for(int j=0; j<m; j++)
miro[i][j] = s.charAt(j)-'0';
}
bfs(0, 0);
System.out.println(miro[n-1][m-1]);
}
public static void bfs(int x, int y) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] {x,y});
while(!queue.isEmpty()) {
int now[] = queue.poll();
int nowX = now[0], nowY = now[1];
for(int i=0; i<4; i++) { // 현 위치에서 상하좌우 갈 수 있는지 검사
int nextX = nowX + dx[i], nextY = nowY + dy[i];
if (nextX>=n || nextY>=m || nextX<0 || nextY<0) continue;
if (miro[nextX][nextY]==0 || checked[nextX][nextY]) continue;
queue.add(new int[] {nextX, nextY});
miro[nextX][nextY] = miro[nowX][nowY]+1; // 다음 갈 칸 = 현위치+1
checked[nextX][nextY] = true;
}
}
}
}
728x90
'Algorithm' 카테고리의 다른 글
[백준][JAVA] 9935 : 문자열 폭발 (0) | 2021.09.11 |
---|---|
[백준][JAVA] 2230 : 수 고르기 (0) | 2021.08.24 |
[백준][JAVA] 2579: 계단 오르기 (0) | 2021.08.14 |
[백준][JAVA] 14501 : 퇴사 (0) | 2021.08.14 |
[백준][JAVA] 10989: 수 정렬하기3 (0) | 2021.08.09 |