코테

[백준 1303] 전쟁- 전투 c++

29도 맑음 2021. 12. 24. 19:47
반응형
#include<iostream>

using namespace std;

int n,m;
char arr[100][100] = {0,};
bool visited[100][100] = {0,};
int blue = 0, white = 0;
int cnt = 0;

int sol(int a, int b){
    visited[a][b]=true;
    cnt++;
    int dx[4] = {0,0,1,-1};
    int dy[4] = {1,-1,0,0};
    char color = arr[a][b];
    for(int i=0; i<4; i++){
        int nx = a+dx[i];
        int ny = b+dy[i];
        if(nx<0 || nx>=n || ny<0 || ny>=m){
            continue;
        }
        if(visited[nx][ny] || arr[nx][ny]!=color){
            continue;
        }
        sol(nx,ny);
    }
    return 0;
}

int main(){
    cin>>n>>m;
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            cin>>arr[i][j];
        }
    }
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            if(!visited[i][j]){
                cnt = 0;
                sol(i,j);
                if(arr[i][j]=='W'){
                    white+=cnt*cnt;
                }else{
                    blue+=cnt*cnt;
                }
            }
        }
    }
    cout<<white<<" "<<blue;
    return 0;
}
반응형