반응형
게임 맵 최단거리: 깊이/너비 우선 탐색(DFS/BFS) Lv.2
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int[][] maps) {
int[][] visit = new int[maps.length][maps[0].length];
Queue<GameMapLoc> q = new LinkedList<>();
q.add(new GameMapLoc(0,0,0));
while(q.size() > 0) {
int x = q.peek().x;
int y = q.peek().y;
int answer = q.poll().moveCnt;
if(x == maps.length-1 && y == maps[0].length-1) {
return answer + 1;
}
int[] xx = {-1, 0, 1, 0};
int[] yy = {0, -1, 0, 1};
for(int i=0;i<4;i++) {
int ax = x+xx[i];
int ay = y+yy[i];
if(ax>=0 && ay>=0 && ax<maps.length && ay<maps[0].length) {
if(maps[ax][ay] == 1 && visit[ax][ay] == 0) {
visit[ax][ay] = 1;
q.add(new GameMapLoc(ax, ay, answer+1));
}
}
}
}
return -1;
}
}
class GameMapLoc{
int x;
int y;
int moveCnt;
public GameMapLoc(int x, int y, int moveCnt) {
// TODO Auto-generated constructor stub
this.x = x;
this.y = y;
this.moveCnt = moveCnt;
}
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2024.04.06 |
---|---|
둘만의 암호 (0) | 2024.04.06 |
JadenCase 문자열 만들기 (0) | 2024.04.06 |
최댓값과 최솟값 (0) | 2024.03.27 |
올바른 괄호 (0) | 2024.03.26 |