풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static String[][] field;
static int a = 0; // 가로
static int b = 0; // 세로
public static void main(String[] args) throws IOException {
int wCount = 0; // W 위력
int bCount = 0; // B 위력
int num = 0;
String str = "";
String[] arr;
BufferedReader br = new BufferedReader ( new InputStreamReader (System.in));
str = br.readLine();
arr = str.split(" ");
a = Integer.parseInt(arr[0]);
b = Integer.parseInt(arr[1]);
field = new String[b][a]; // 전체 배열 초기화
// 배열에 값 넣기
for(int i=0; i<b; i++) {
str = br.readLine();
arr = str.split("");
for(int j=0; j<a; j++) {
field[i][j] = arr[j];
}
}
for(int i=0; i<b; i++) {
for(int j=0; j<a; j++) {
if("W".equals(field[i][j])) {
num = Find("W", i, j);
wCount += (num * num);
}else if("B".equals(field[i][j])) {
num = Find("B", i, j);
bCount += (num * num);
}
}
}
System.out.println(wCount + " " + bCount);
}
// 병사 위력 구하기
private static int Find(String str, int i, int j) {
field[i][j] = "0";
int count = 1;
if(i==0) {
if(str.equals(field[i+1][j])) {
count += Find(str, i+1, j);
}
}else if(i==(b-1)){
if(str.equals(field[i-1][j])) {
count += Find(str, i-1, j);
}
}else {
if(str.equals(field[i+1][j])) {
count += Find(str, i+1, j);
}
if(str.equals(field[i-1][j])) {
count += Find(str, i-1, j);
}
}
if(j==0) {
if(str.equals(field[i][j+1])) {
count += Find(str, i, j+1);
}
}else if(j==(a-1)){
if(str.equals(field[i][j-1])) {
count += Find(str, i, j-1);
}
}else {
if(str.equals(field[i][j+1])) {
count += Find(str, i, j+1);
}
if(str.equals(field[i][j-1])) {
count += Find(str, i, j-1);
}
}
return count;
}
}
'코딩 문제 > 백준' 카테고리의 다른 글
백준 - 2667번 (0) | 2021.03.25 |
---|---|
백준 - 1325번 (0) | 2021.03.17 |
백준 - 1012번 (0) | 2021.03.15 |
백준 - 7785번 (0) | 2021.03.15 |
백준 - 6603번 (0) | 2021.03.15 |