[문제]
https://www.acmicpc.net/problem/1303
[풀이]
DFS, BFS 둘 다 풀이 가능하다.
[코드]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace::std;
int N, M;
char board[100][100];
bool visited[100][100];
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
int cnt;
void dfs(int x, int y){
visited[x][y] = true;
cnt++;
for(int i=0; i<4; i++){
int newy = y+dy[i];
int newx = x+dx[i];
if(newx>=0 && newx<M && newy>=0 && newy<N && board[x][y]==board[newx][newy] && !visited[newx][newy]){
dfs(newx, newy);
}
}
}
int main() {
int bcnt = 0, wcnt = 0;
//아군 병사의 위력과 적군 병사의 위력의 합. N명이 모이면 N^2의 위력.
cin >> N >> M;
for(int i=0; i<M; i++){
for(int j=0; j<N; j++){
cin >> board[i][j];
}
}
for(int i=0; i<M; i++){
for(int j=0; j<N; j++){
if(!visited[i][j]){
cnt = 0;
dfs(i, j);
if(board[i][j]=='B')
bcnt += cnt*cnt;
if(board[i][j]=='W')
wcnt += cnt*cnt;
}
}
}
cout << wcnt << " " << bcnt;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 1446 지름길 - 다익스트라 (0) | 2022.02.15 |
---|---|
[boj] 백준 1743 음식물 피하기 - DFS (0) | 2022.02.06 |
[boj] 백준 1342 행운의 문자열 (0) | 2022.02.04 |
[boj] 백준 1389 케빈 베이컨의 6단계 법칙 (0) | 2022.02.03 |
[c++] 백준 1309 동물원 - 동적계획법 (0) | 2022.02.03 |