ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 2178번 : 미둜 탐색
    SW Test/BaekJoon 2021. 4. 23. 01:34
    λ°˜μ‘ν˜•
    • 이 글은 c++둜 풀이λ₯Ό μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

    문제

     

    μ˜ˆμ‹œ

     

    풀이

    • BFS νŠΉμ§• 쀑 ν•˜λ‚˜λŠ” νƒμƒ‰ν•˜λŠ” μ˜μ—­μ„ μ΅œμ†Œν•œμ˜ 거리둜 νƒμƒ‰ν•œλ‹€λŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.
    • λ”°λΌμ„œ BFS μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ›ν•˜λŠ” 곡간을 처음으둜 νƒμƒ‰ν–ˆλ˜ μ‹œκ°„μ΄ μ΅œλ‹¨κ±°λ¦¬ μž…λ‹ˆλ‹€.
    #include<iostream>
    #include<queue>
    #include<utility>
    #include<algorithm>
    #include<string>
    using namespace std;
    
    int n,m;
    int arr[100][100];
    int dist[100][100];
    int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
    
    bool inside(int y,int x){
        return 0<=y && y<n && 0<=x && x<m;
    }
    
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        
        cin>>n>>m;
        for(int i=0;i<n;i++){
            string s;
            cin>>s;
            for(int j=0;j<m;j++){
                arr[i][j] = s[j] - '0';
            }
        }
        
        queue<pair<int,int>> q;
        q.push({0,0});
        dist[0][0] = 1;
        
        while(!q.empty()){
            int y = q.front().first;
            int x = q.front().second;
            q.pop();
            
            for(int i=0;i<4;i++){
                int dy = y + dir[i][0];
                int dx = x + dir[i][1];
                
                if(inside(dy,dx) && arr[dy][dx] && dist[dy][dx] == 0){
                    q.push({dy,dx});
                    dist[dy][dx] = dist[y][x] + 1;
                }
            }
        }
        cout<<dist[n-1][m-1];
    }
    • μΆ”κ°€λ‘œ κΆκΈˆν•œ μ μ΄λ‚˜ μˆ˜μ •ν•  뢀뢄이 있으면 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.
    λ°˜μ‘ν˜•

    'SW Test > BaekJoon' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    [BaekJoon] 4179번 : 뢈!  (0) 2021.04.23
    [BaekJoon] 7576번 : ν† λ§ˆν†   (0) 2021.04.23
    [BaekJoon] 1926번 : κ·Έλ¦Ό  (0) 2021.04.23
    [BaekJoon] 11724번 : μ—°κ²°  (0) 2021.04.23
    [BaekJoon] 10816번 : μˆ«μžμΉ΄λ“œ 2  (0) 2021.04.21
Designed by Tistory.