- 백준 1236번: 성 지키기
- 문제
영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.
성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.
- 입력
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.
- 출력
첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1236 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
boolean[][] proc = new boolean[n][m];
String s = "";
int row = 0;
int col = 0;
for(int i = 0 ; i < n ; i++) {
String x = br.readLine();
boolean flag = true;
for(int j = 0 ; j < m ; j++) {
s = x.charAt(j) + "";
if(s.contentEquals("X")) {
proc[i][j] = true;
flag = false;
}
}
if(flag) {
row++;
}
}
for(int i = 0 ; i < m ; i++) {
boolean flag = true;
for(int j = 0 ; j < n ; j++) {
if(proc[j][i]) {
flag = false;
}
}
if(flag) {
col++;
}
}
System.out.println(row > col ? row : col);
}
}