반응형

게임 맵 최단거리: 깊이/너비 우선 탐색(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

+ Recent posts