참고하여 코드 작성해봅시다.
https://tmdrl5779.tistory.com/216
[프로그래머스] 게임 맵 최단거리(Java 자바)
https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문
tmdrl5779.tistory.com
BFS를 공부하고 있다.
Breadth Frirst Search
너비 우선 탐색
쉽지 않다. ;.
추천을 받아 바킹 독님의 BFS 게시물을 정독했다.
[실전 알고리즘] 0x09강 - BFS
안녕하세요 여러분, 드디어 올 것이 왔습니다. 마음의 준비를 단단히 하셔야 합니다.. 드디어 실전 알고리즘 강의에서 첫 번째 고비에 도달했는데 이 강의와 함께 이번 고비를 잘 헤쳐나가면 좋
blog.encrypted.gg
다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 탐색하는 알고리즘
import java.util.*;
class Solution {
int[] dx = {1,0,-1,0};
int[] dy = {0,1,0,-1};
public int solution(int[][] maps) {
int answer = 0;
int[][] visited = new int[maps.length][maps[0].length];
bfs(maps,visited);
answer = visited[maps.length-1][maps[0].length-1];
if(answer == 0){
answer = -1;
}
return answer;
}
public void bfs(int[][] maps, int[][] visited){
int x = 0;
int y = 0;
visited[x][y]=1;
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] {x,y});
while(!queue.isEmpty()){
int[] current=queue.remove();
int cX = current[0];
int cY = current[1];
for(int i=0;i<4;i++){
int nX = cX+dx[i];
int nY = cY+dy[i];
if(nX<0 || nX>maps.length-1 || nY<0 || nY>maps[0].length-1){
continue;
}
if(visited[nX][nY]==0 && maps[nX][nY]==1){
visited[nX][nY] = visited[cX][cY]+1;
queue.add(new int[] {nX,nY});
}
}
}
}
}
x,y =0
큐생성
while문
큐 제거한거 current
current에 dx,dy더해서
nx,ny 만듬
continue
visited=0
maps=1
nxny = visited cx+cy +1
add(nx,ny)
'코딩테스트 > 💯프로그래머스 코딩테스트 연습' 카테고리의 다른 글
GROUP BY_고양이와 개는 몇 마리 있을까 (0) | 2023.02.16 |
---|---|
SUM, MAX, MIN_최댓값 구하기, 최소값 구하기 (0) | 2023.02.16 |
2018 K.B.R 뉴스 클러스터링_보류 (0) | 2022.12.21 |
프로그래머스 고득점 kit_ 기능개발 (0) | 2022.11.17 |
프로그래머스 고득점kit_ 스택/큐_ 올바른 괄호 (0) | 2022.11.15 |