Mini

프로그래머스 게임맵 최단거리 c++ // 최단거리는 bfs 본문

Algorithm/bfs

프로그래머스 게임맵 최단거리 c++ // 최단거리는 bfs

Mini_96 2023. 10. 11. 16:49

https://school.programmers.co.kr/learn/courses/30/lessons/1844

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1.삽질과정

ny>=n, nx>=n

nx도 n으로 되있어서 틀렸습니다가 났다...

해결 : nx>=m   ->   continue;

 

2.전체코드

#include<bits/stdc++.h>
using namespace std;

queue<pair<int,int>> q;
int v[104][104];
int y,x,ny,nx;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};

int solution(vector<vector<int>> maps)
{
    int n=maps.size();  //|
    int m=maps[0].size();   //ㅡ
    
    q.push({0,0});
    v[0][0]=1;
    
    while(q.size()){       
        tie(y,x)=q.front(); q.pop();
        for(int i=0;i<4;++i){
            ny=y+dy[i];
            nx=x+dx[i];
            if(ny<0||ny>=n||nx<0||nx>=m) continue;
            if(v[ny][nx]) continue;
            if(maps[ny][nx]==0) continue;

            q.push({ny,nx});
            v[ny][nx]=v[y][x]+1;
        }
    }
    
    if(v[n-1][m-1]) return v[n-1][m-1];
    return -1;
}