ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 1926๋ฒˆ : ๊ทธ๋ฆผ
    SW Test/BaekJoon 2021. 4. 23. 01:26
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ c++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

     

    ์˜ˆ์‹œ

     

    ํ’€์ด

    • BFS๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ๋กœ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ง€์—ญ์—์„œ BFS๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฒ˜์Œ BFS์—์„œ ์‹คํ–‰ํ•˜์—ฌ ํƒ์ƒ‰ํ•˜์ง€ ์•Š์€ ์ง€์—ญ์—์„œ ๋‹ค์‹œ BFS๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ๋ฆผ์˜ ๊ฐฏ์ˆ˜๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ฆผ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” BFS๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ์—์„œ popํ•œ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
    #include<iostream>
    #include<queue>
    #include<utility>
    using namespace std;
    
    int n,m;
    int arr[500][500];
    bool visit[500][500];
    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++){
            for(int j=0;j<m;j++){
                cin>>arr[i][j];
            }
        }
        int cnt = 0;
        int ans = 0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(arr[i][j] && !visit[i][j] ){
                    cnt++;
                    int total = 0;
                    visit[i][j] = 1;
                    
                    queue<pair<int,int>> q;
                    q.push({i,j});
                    
                    while(!q.empty()){
                        int y = q.front().first;
                        int x = q.front().second;
                        q.pop();
                        total++;
                        
                        for(int k=0;k<4;k++){
                            int dy = y + dir[k][0];
                            int dx = x+ dir[k][1];
                            
                            if(inside(dy,dx) && arr[dy][dx] && !visit[dy][dx]){
                                visit[dy][dx] = 1;
                                q.push({dy,dx});
                            }
                        }
                    }
                    ans = max(ans, total);
                }
            }
        }
        cout<<cnt<<"\n";
        cout<<ans<<"\n";
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.