#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
using namespace std;
#define X first
#define Y second
string board[102];
bool vis[102][102];
bool vis1[102][102];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for(int i=0; i<n; i++) {
cin >> board[i];
}
int cnt=0;
for(int i=0; i<n;i++) {
for(int j=0; j<n; j++) {
//방문함
if(vis[i][j]==1) continue;
//새로운 색
cnt++;
queue<pair<int,int>> q1;
char now=board[i][j];
vis[i][j]=1;
q1.push({i,j});
while(!q1.empty()) {
pair<int,int> cur=q1.front();
q1.pop();
for(int idx=0; idx<4; idx++) {
int nx=cur.X+dx[idx];
int ny=cur.Y+dy[idx];
if(nx<0 || nx >=n || ny<0 || ny>=n) continue;
//다른색 이거나 방문됨 -> 넘김
if(board[nx][ny]!=now || vis[nx][ny]) continue;
q1.push({nx,ny});
vis[nx][ny]=1;
}
}
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(board[i][j]=='R') board[i][j]='G';
}
}
int cnt1=0;
for(int i=0; i<n;i++) {
for(int j=0; j<n; j++) {
if(vis1[i][j]==1) continue;
cnt1++;
queue<pair<int,int>> Q;
char now=board[i][j];
Q.push({i,j});
vis1[i][j]=1;
while(!Q.empty()) {
pair<int,int> cur=Q.front();
Q.pop();
for(int idx=0;idx<4;idx++) {
int nx=cur.X+dx[idx];
int ny=cur.Y+dy[idx];
if(nx<0 || nx >=n || ny<0 || ny>=n) continue;
if(board[nx][ny]!=now || vis1[nx][ny]) continue;
Q.push({nx,ny});
vis1[nx][ny]=1;
}
}
}
}
cout << cnt << ' ' << cnt1;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: