백준/브론즈1

[Python] 백준 1236번 - 성 지키기

두부마라탕 2025. 4. 30. 18:53

https://www.acmicpc.net/problem/1236


문제

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

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

 

코드

rows, cols = map(int, input().split())

row = [0 for i in range(rows)]
col = [0 for i in range(cols)]

for i in range(rows):
    tmp = input()
    for j in range(cols):
        if tmp[j] == 'X':
            row[i] += 1
            col[j] += 1

sgr = sgc = 0

for i in row:
    if i == 0:
        sgr += 1

for i in col:
    if i == 0:
        sgc += 1

print(max(sgr, sgc))

 

풀이

1. 성 크기를 입력받는다.

2. 행, 열의 리스트를 만들고 0으로 초기화한다.

3. 그리고 X가 있는 좌표를 1(존재한다는 의미)로 만든다.

4. 이제 경비가 없는 곳을 확인하고 없다면(0이라면) 가로, 세로 각각 1을 더해준다.

5. 가로 세로 중 더 큰 값을 출력한다.