https://www.acmicpc.net/problem/1303
자주 나오는 유형으로, DFS를 이용하여 간단히 구현하였다. 설명은 생략 :)
#include <iostream>
using namespace std;
int N, M,W,B;
char map[100][100];
int visit[100][100];
int dx[4] = { 0,0,1,-1 };
int dy[4] = { 1,-1,0,0 };
int tmp;
void solve(int x, int y) {
if (visit[x][y]) return;
tmp++;
visit[x][y] = 1;
for (int i = 0; i < 4; i++) {
int cx = x + dx[i];
int cy = y + dy[i];
if (cx >= 0 && cx < M && cy >= 0 && cy < N && !visit[cx][cy] && map[cx][cy] == map[x][y]) {
solve(cx, cy);
}
}
}
int main() {
cin >> N >> M;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cin >> map[i][j];
}
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (!visit[i][j]) {
tmp = 0;
solve(i, j);
if (map[i][j] == 'W') W += tmp * tmp;
else B += tmp * tmp;
}
}
}
cout << W << " " << B << endl;
}
'Algorithm > BFS & DFS' 카테고리의 다른 글
[프로그래머스] JetBrains x 프로그래머스 월간 코드 챌린지 (0) | 2021.09.09 |
---|---|
[프로그래머스] 게임맵 최단거리 (C++, JAVA) (0) | 2021.09.08 |
[백준] 1600번 : 말이 되고픈 원숭이 (C++) (0) | 2021.09.06 |
[백준] 17142번 : 연구소3 (C++) (삼성 SW 기출) (0) | 2021.09.03 |
[백준] 2251번 : 물통 (C++) (0) | 2021.08.19 |
댓글