728x90
문제
영식이는 직사각형 모양의 성을 가지고 있다.
성의 1층은 몇 명의 경비원에 의해서 보호되고 있다.
영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.
성의 크기와 경비원이 어디있는지 주어졌을 때,
몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1236
입력
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다.
N과 M은 50보다 작거나 같은 자연수이다.
둘째 줄부터 N개의 줄에는 성의 상태가 주어진다.
성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.
출력
첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.
예제 입력 1
4 4
....
....
....
....
예제 출력 1
4
예제 입력 2
3 5
XX...
.XX..
...XX
예제 출력 2
0
문제 풀이
N, M = map(int,input().split())
L = [input() for i in range(N)]
row = [0] * N
col = [0] * M
for i in range(N):
for j in range(M):
if L[i][j] == 'X':
row[i] = 1
col[j] = 1
row_total = 0
for i in range(N):
if row[i] == 0:
row_total += 1
col_total = 0
for i in range(M):
if col[i] == 0:
col_total += 1
print(max(row_total, col_total))
리스트로 성의 상태를 입력받은 후 중첩 for문을 통해 행, 열 각각 경비원의 유무를 확인합니다.
이후 행, 열 각각 필요한 경비원의 수를 구한 후 더 큰 수를 구해주면 됩니다.
*참고 : 문제 풀이를 실행할 시 아래와 같은 결과를 얻을 수 있습니다.
# input
3 5
XX...
.XX..
..XX.
---------
# output
row = [1, 1, 1]
row_total = 0
col = [1, 1, 1, 1, 0]
col_total = 1
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90