본문 바로가기

코테

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

반응형
#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;
}
반응형

'코테' 카테고리의 다른 글

최대 공약수, 최소 공약수  (0) 2021.12.27
[백준 14226] 이모티콘 c++  (0) 2021.12.25
[백준 2339] 석판자르기 c++  (0) 2021.12.24
[백준 1300] k번째 수 c++  (0) 2021.12.23
[백준 1062] 가르침 c++  (0) 2021.12.23