// Copyright © 2021 ์์ฃผํ. All rights reserved.
//
// https://www.acmicpc.net/problem/10026
// BOJ10026 ์ ๋ก์์ฝ
#include <iostream>
#include <queue>
#include <memory.h>
using namespace std;
int N,ans1,ans2; //NxN, ans1=์ ๋ก์์ฝ ์๋์ฌ๋์ด ๋ดค์๋, ans=์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ดค์๋
char map[101][101];
int visited[101][101];
queue<pair<int, int>>q;
int dx[] = { 0,0,-1,1 }; //์ ํ ์ข ์ฐ
int dy[] = { -1,1,0,0 };
void reset() {
memset(visited,0,sizeof(visited));
}
void bfs(int a, int b) {
q.push({ a,b });
visited[a][b] = 1;
while (!q.empty()) {
int x = q.front().first;
int y = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) { //์ ํ ์ข ์ฐ ํ์
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < N && ny >= 0 && ny < N) { //๊ตฌ์ญ์ ๋ฒ์๋ฅผ ๋์ด์์ง ์์๋
if (!visited[nx][ny] && (map[nx][ny] == map[x][y])) {
visited[nx][ny] = 1;
q.push({ nx,ny });
}
}
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) { //๊ทธ๋ฆผ ์ ๋ณด ์
๋ ฅ.
for (int k = 0; k < N; k++) {
cin >> map[i][k];
}
}
for (int i = 0; i < N; i++) { //์ ๋ก์์ฝ ์๋์ฌ๋์ด ๋ณผ๋ ํ์
for (int k = 0; k < N; k++) {
if (!visited[i][k]) {
bfs(i, k);
ans1++;
}
}
}
reset(); //๋ฐฉ๋ฌธ ๊ธฐ๋ก ์ด๊ธฐํ
for (int i = 0; i < N; i++) { //์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ณผ๋๋ฅผ ํ์ํ๊ธฐ์ํด
for (int k = 0; k < N; k++) {
if (map[i][k] == 'G') map[i][k] = 'R'; //์ด๋ก์ ๋นจ๊ฐ์ผ๋ก ๋ณ๊ฒฝ
}
}
for (int i = 0; i < N; i++) { //์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ณผ๋ ํ์
for (int k = 0; k < N; k++) {
if (!visited[i][k]) {
bfs(i, k);
ans2++;
}
}
}
cout << ans1<<' '<<ans2;
}
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1015๋ฒ - ์์ด ์ ๋ ฌ (0) | 2021.10.16 |
---|---|
[๋ฐฑ์ค,c++] 1012๋ฒ - ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2021.10.16 |
[๋ฐฑ์ค,c++] 1010๋ฒ - ๋ค๋ฆฌ ๋๊ธฐ (0) | 2021.10.16 |
[๋ฐฑ์ค,c++] 1009๋ฒ - ๋ถ์ฐ์ฒ๋ฆฌ (0) | 2021.10.16 |
[๋ฐฑ์ค,c++] 1005๋ฒ - ACM Craft (0) | 2021.10.16 |
[๋ฐฑ์ค,c++] 1003๋ฒ - ํผ๋ณด๋์น ํจ์ (0) | 2021.10.16 |
๋๊ธ