일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- next13 head
- React 공식문서
- react
- Programmers
- Nextjs
- RTK Query
- React 고급안내서
- hook
- codingtest
- Babel
- Render Props
- background tab
- react-helmet
- Javascript
- Next13
- background setInterval
- background setttimeout
- 고급안내서
- React 18 Nextjs
- context
- React18
- background: url
- getUTCDate
- notFound()
- Nextjs React 18
- react hook
- CSS
- React 18
- React API 참고서
- React 고급 안내서
Archives
- Today
- Total
akjfal
[Programmers] 게임 맵 최단거리 본문
// 1 <= n, m <= 100
// n과 m이 모두 1인경우는 주어지지 않는다.
// bfs를 이용해 최단거리 찾기
import java.util.Queue;
import java.util.LinkedList;
class Solution {
static class Node{
int length;
int y;
int x;
Node(int y, int x, int length){
this.y = y;
this.x = x;
this.length = length;
}
}
static int[] dirX = {0, 1, 0, -1};
static int[] dirY = {-1, 0, 1, 0};
static int n,m;
public int solution(int[][] maps) {
int answer = -1;
Queue<Node> q = new LinkedList<>();
if(maps[0][0] == 1){
q.add(new Node(0, 0, 1));
}
n = maps.length;
m = maps[0].length;
while(!q.isEmpty()){
Node node = q.poll();
for(int i = 0; i < 4; i++){
int y = node.y + dirY[i];
int x = node.x + dirX[i];
if(isGo(y, x, maps)){
if(y+1 == n && x+1 == m){
System.out.println(n + " " + m);
answer = node.length+1;
q.clear();
}
maps[y][x] = 0;
q.add(new Node(y, x, node.length+1));
}
}
}
return answer;
}
public boolean isGo(int y, int x, int[][] map){
if(y < 0 || y >= n || x < 0 || x >= m || map[y][x] == 0){
return false;
}
return true;
}
}
BFS 기본문제다.
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 괄호 회전하기 (0) | 2021.06.17 |
---|---|
[Programmers] 예상 대진표도움말 (0) | 2021.06.16 |
프로그래머스 42583번 java (0) | 2021.01.15 |
프로그래머스 68645번 java (0) | 2021.01.14 |
프로그래머스 1829번 java (0) | 2021.01.14 |
Comments