ABOUT ME

-

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

    문제

     

    μ˜ˆμ‹œ

     

    풀이

    • μ‹œμž‘μ μ΄ μ—¬λŸ¬ 개 μžˆλŠ” BFS 문제둜 BFS에 λŒ€ν•œ νŠΉμ§•μ΄ μ œλŒ€λ‘œ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
    • BFSλŠ” 큐에 처음 μ‹œμž‘μ μ„ ν•œ 개 λ‹΄μ•˜λ‹€λ©΄, 이 λ¬Έμ œλŠ” μ‹œμž‘μ μ΄ μ—¬λŸ¬ 개 있으면 μ—¬λŸ¬ 개λ₯Ό ν•˜λ‚˜μ˜ 큐에 λ‹΄κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.
    • νμ—μ„œ front에 ν•΄λ‹Ήλ˜λŠ” μ‹œμž‘μ μ—μ„œ BFSλ₯Ό μ§„ν–‰ν•˜κ²Œ 되고 νŠΉμ • μ˜μ—­μ€ μ—¬λŸ¬ μ‹œμž‘μ  쀑 처음 λ°©λ¬Έν•  λ•Œκ°€ μ΅œλ‹¨ κ±°λ¦¬μž…λ‹ˆλ‹€.
    #include<iostream>
    #include<utility>
    #include<queue>
    using namespace std;
    
    int n,m;
    int arr[1000][1000];
    int dist[1000][1000];
    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(){
        cin>>m>>n;
        queue<pair<int,int>> q;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                cin>>arr[i][j];
                if(arr[i][j] == 1){
                    dist[i][j] = 1;
                    q.push({i,j});
                }
            }
        }
        
        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] == 0 && !dist[dy][dx]){
                    dist[dy][dx] = dist[y][x]+1;
                    q.push({dy,dx});
                }
            }
        }
        
        int ans = 0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(arr[i][j] != -1 && dist[i][j] == 0){
                    cout<<-1;
                    return 0;
                }
                ans = max(ans, dist[i][j]);
            }
        }
        cout<<ans-1;
    }
    • μΆ”κ°€λ‘œ κΆκΈˆν•œ μ μ΄λ‚˜ μˆ˜μ •ν•  λΆ€λΆ„ 있으면 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.
    λ°˜μ‘ν˜•

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

    [BaekJoon] 1697번 : μˆ¨λ°”κΌ­μ§ˆ  (0) 2021.04.23
    [BaekJoon] 4179번 : 뢈!  (0) 2021.04.23
    [BaekJoon] 2178번 : 미둜 탐색  (0) 2021.04.23
    [BaekJoon] 1926번 : κ·Έλ¦Ό  (0) 2021.04.23
    [BaekJoon] 11724번 : μ—°κ²°  (0) 2021.04.23
Designed by Tistory.