1236번 문제 같은 경우, 모든 행과 모든 열에 한 명 이상의 경비원이 있어야 한다고 한다.
그러면 행 기준,열 기준으로 필요한 경비원의 수를 각각 계산하여 더 큰 수를 출력하면 최소한의 경비원의 수가 된다.
이 문제를 풀기 위해선 행 기준 열 기준으로 비어있는 경비원을 구하기만 하면 된다.
행 기준으로 보았을 때, 만약 두 행에 대해서 경비원이 존재하지 않고,
열 기준으로 보았을 때 , 한 열에 대해서 경비원이 존재하지 않으면,
더 큰 값을 가지는 행 부분이 필요한 경비원의 수라고 할 수 있다.
n, m = map(int, input().split())
array = []
for _ in range(n):
array.append(input())
row = [0] * n
column = [0] * m
for i in range(n):
for j in range(m):
if array[i][j] == 'X':
row[i] = 1
column[j] = 1
row_count = 0
for i in range(n):
if row[i] == 0:
row_count += 1
column_count = 0
for j in range(m):
if column[j] == 0:
column_count += 1
print(max(row_count, column_count))
여기서는 경비원이 존재하는 위치가 if array[i][j] == 'X': 로 담기게 된다.
그렇기 때문에, 각각의 행과 열에 대해 반복문을 통해서 경비원이 존재하지 않는 행에 대해 count를 증가 시킨다.
그 다음에 행,열 기준으로 각각의 count를 비교해서 더 큰값이 print(max(row_count, column_count))를 통해 필요한 최소 경비원의 수가 출력 되도록 했다.
'코딩테스트' 카테고리의 다른 글
BACKJOON 1668번 (트로피 진열) (0) | 2023.06.05 |
---|---|
BACKJOON 1302번 (베스트셀러) (0) | 2023.06.05 |
BACKJOON 1568번 ( 새 ) (0) | 2023.06.05 |
BACKJOON 1543번 (문서 검색) (0) | 2023.06.05 |
BACKJOON 2751번 (수 정렬하기 2) (0) | 2023.06.05 |