일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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-helmet
- React18
- CSS
- Nextjs
- React 18 Nextjs
- Babel
- React 고급안내서
- Next13
- background setttimeout
- Nextjs React 18
- Javascript
- React 공식문서
- background tab
- context
- 고급안내서
- React API 참고서
- react
- background: url
- React 18
- react hook
- RTK Query
- React 고급 안내서
- next13 head
- getUTCDate
- Programmers
- codingtest
- Render Props
- notFound()
- hook
- background setInterval
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