https://www.acmicpc.net/problem/1652
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean[][] matrix;
int N = Integer.parseInt(br.readLine());
matrix = new boolean[N][N];
for (int i = 0; i < N; i++) {
String[] inputs = br.readLine().split("");
for (int j = 0; j < N; j++) {
String input = inputs[j];
if (input.equals(".")) {
matrix[i][j] = true;
} else {
matrix[i][j] = false;
}
}
}
int rowCount = 0;
int colCount = 0;
// 세로로 누울 수 있는 자리 구하기
for (int i = 0; i < N; i++) {
int count = 0;
for (int j = 0; j < N; j++) {
if (matrix[j][i]) {
count++;
} else {
//[중요!!] 장애물 만났을 때도 따져야 됨
if (count > 1) {
colCount++;
}
count = 0;
}
}
if (count > 1) {
colCount++;
}
}
// 가로로 누울 수 있는 자리 구하기
for (int i = 0; i < N; i++) {
int count = 0;
for (int j = 0; j < N; j++) {
if (matrix[i][j]) {
count++;
} else {
if (count > 1) {
rowCount++;
}
count = 0;
}
}
if (count > 1) {
rowCount++;
}
}
System.out.println(rowCount + " " + colCount);
}
}
X
, 혹은 .
둘 중 하나가 랜덤하게 채워져있다..
이 연속적으로 2개 이상 존재하는 영역은 누울 수 있다.X
가 나타날 때까지 쭉 늘린다..
이면 true, X
면 false로 값을 채워넣는다.rowCount
, colCount
를 각각 구한다.matrix[j][i]
, 가로는 matrix[i][j]
)rowCount
, colCount
의 갱신조건이 한 라인을 모두 탐색한 후 뿐만 아니라 벽을 만났을 때도 포함되어야 한다.
잘 보고 갑니다~ :)