๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) : ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ
๋ฌธ์ ์ถ์ฒ - ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit
๋ฌธ์ ์ค๋ช
ROR ๊ฒ์์ ๋ ํ์ผ๋ก ๋๋์ด์ ์งํํ๋ฉฐ, ์๋ ํ ์ง์์ ๋จผ์ ํ๊ดดํ๋ฉด ์ด๊ธฐ๋ ๊ฒ์์ ๋๋ค. ๋ฐ๋ผ์, ๊ฐ ํ์ ์๋ ํ ์ง์์ ์ต๋ํ ๋นจ๋ฆฌ ๋์ฐฉํ๋ ๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค.
์ง๊ธ๋ถํฐ ๋น์ ์ ํ ํ์ ํ์์ด ๋์ด ๊ฒ์์ ์งํํ๋ ค๊ณ ํฉ๋๋ค. ๋ค์์ 5 x 5 ํฌ๊ธฐ์ ๋งต์, ๋น์ ์ ์บ๋ฆญํฐ๊ฐ (ํ: 1, ์ด: 1) ์์น์ ์๊ณ , ์๋ ํ ์ง์์ (ํ: 5, ์ด: 5) ์์น์ ์๋ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.

์ ๊ทธ๋ฆผ์์ ๊ฒ์์ ๋ถ๋ถ์ ๋ฒฝ์ผ๋ก ๋งํ์์ด ๊ฐ ์ ์๋ ๊ธธ์ด๋ฉฐ, ํฐ์ ๋ถ๋ถ์ ๊ฐ ์ ์๋ ๊ธธ์
๋๋ค. ์บ๋ฆญํฐ๊ฐ ์์ง์ผ ๋๋ ๋, ์, ๋จ, ๋ถ ๋ฐฉํฅ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ, ๊ฒ์ ๋งต์ ๋ฒ์ด๋ ๊ธธ์ ๊ฐ ์ ์์ต๋๋ค.
์๋ ์์๋ ์บ๋ฆญํฐ๊ฐ ์๋ ํ ์ง์์ผ๋ก ๊ฐ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํ๋ด๊ณ ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ 11๊ฐ์ ์นธ์ ์ง๋์ ์๋ ํ ์ง์์ ๋์ฐฉํ์ต๋๋ค.

- ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ 15๊ฐ์ ์นธ์ ์ง๋์ ์๋ํ ์ง์์ ๋์ฐฉํ์ต๋๋ค.

์ ์์์์๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์๋ํ ์ง์์ ๋์ฐฉํ๋ ๋ฐฉ๋ฒ์ ์์ผ๋ฏ๋ก, ์ด ๋ฐฉ๋ฒ์ด ์๋ ํ ์ง์์ผ๋ก ๊ฐ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ง์ฝ, ์๋ ํ์ด ์์ ์ ํ ์ง์ ์ฃผ์์ ๋ฒฝ์ ์ธ์๋์๋ค๋ฉด ์๋ ํ ์ง์์ ๋์ฐฉํ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋น์ ์ ์บ๋ฆญํฐ๋ ์๋ ํ ์ง์์ ๋์ฐฉํ ์ ์์ต๋๋ค.

๊ฒ์ ๋งต์ ์ํ maps๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์บ๋ฆญํฐ๊ฐ ์๋ ํ ์ง์์ ๋์ฐฉํ๊ธฐ ์ํด์ ์ง๋๊ฐ์ผ ํ๋ ์นธ์ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋จ, ์๋ ํ ์ง์์ ๋์ฐฉํ ์ ์์ ๋๋ -1์ return ํด์ฃผ์ธ์.
#include<vector>
#include<queue>
#include<iostream>
using namespace std;
int visited[102][102]={0,};
int re[102][102]={0,};
int solution(vector<vector<int> > maps){
int n = maps.size();
int m=maps[0].size();
int answer = 0;
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
queue<pair<int,int> > q;
q.push({0,0});
re[0][0]=1;
while(!q.empty()){
pair<int,int> a = q.front();
q.pop();
for(int i=0; i<4; ++i){
int nx=a.first+dx[i];
int ny=a.second+dy[i];
if(nx<0||ny<0||nx>=n||ny>=m) continue;
else if(visited[nx][ny]==1) continue;
else if(maps[nx][ny]==0) continue;
else{
q.push({nx,ny});
visited[nx][ny] = 1;
re[nx][ny] = re[a.first][a.second]+1;
}
}
}
if(re[n-1][m-1]==0) re[n-1][m-1]=-1;
answer = re[n-1][m-1];
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.3 : ๋คํธ์ํฌ (DFS/BFS) (0) | 2023.02.23 |
---|---|
[C++/PGS] Lv.2 : ํ๊ฒ ๋๋ฒ (DFS) (0) | 2023.02.23 |
[PGS] Lv.0 (์ฝ๋ฉํ ์คํธ ์ ๋ฌธ) 12์ผ์ฐจ ๋ฌธ์ (0) | 2023.02.20 |
[PGS] Lv.0 (์ฝ๋ฉํ ์คํธ ์ ๋ฌธ) 11์ผ์ฐจ ๋ฌธ์ (0) | 2023.02.20 |
[PGS] Lv.0 (์ฝ๋ฉํ ์คํธ ์ ๋ฌธ) 10์ผ์ฐจ ๋ฌธ์ (1) | 2023.02.20 |