본문 바로가기
알고리즘 배우기

[백준] Bronze 1. 1236번: 성 지키기

by cwin 2024. 7. 16.
# n과 m을 입력받기
n, m = map(int, input().split())

no_n = set()
no_m = set()

# n개의 행을 입력받아 처리
for i in range(n):
    ch = input()
    l = list(ch)
    for j in range(m):
        if l[j] == 'X':
            no_n.add(i)
            no_m.add(j)

# no_n과 no_m의 길이
len_n = n - len(no_n)
len_m = m - len(no_m)

# 큰 거를 고르면 되는 이유는 최소의 경비원만 설치한다는 의미
# 최적의 선택을 한다는 가정 하에, (가로 세로)를 한 번에 지우는 경우를 먼저 선택하므로
# 작은 쪽은 자동으로 만족된다.
big = max(len_n, len_m)

print(big)