문제#

영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.

성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.

입력#

첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.

출력#

첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.

예제 입출력#

입력 출력
4 4



4

내 코드#

python
n, m = map(int, input().split())
castle = []

for _ in range(n) :
    castle.append(input())

row = [0] * n
col = [0] * m

for i in range(n) :
    for j in range(m) :
        if castle[i][j] == 'X' :
            row[i] = 1
            col[j] = 1

row_count = 0
for i in range(n) :
    if row[i] == 0 :
        row_count += 1

col_count = 0
for i in range(m) :
    if col[i] == 0 :
        col_count += 1

print(max(row_count, col_count))

해당 위치에 경비원이 있을 경우에 해당 행과 열 배열에 1을 넣어 주고나서 보면 경비원이 위치해있는 행이나 열은 1을 가지고 있을 거고, 아니면 0을 가지고 있을 것이다. 먼저 행을 체크해서 0인 경우가 있을 경우에 row_count를 1 더해준다. 이것은 곧 경비원이 없는 행 수를 나타낸다. 그리고 col_count도 동일하게 구해준다. 그 중에서 더 큰 값이 필요한 경비원의 수 이다. 그렇기 때문에 두 변수 중 더 큰 값을 print()해준다.