- 문제
영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.
성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.- 입력
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.- 출력
첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.
#include<iostream>
#include<algorithm>
using namespace std;
int N, M;
char c[51][51];
int x[50], y[50];
int row_count, col_count;
void fast_io()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
}
int main()
{
fast_io();
cin >> N >> M;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cin >> c[i][j];
if (c[i][j] == 'X')
{
x[j]++;
y[i]++;
}
}
}
for (int i = 0; i < N; i++)
{
if (y[i] == 0)
{
row_count++;
}
}
for (int i = 0; i < M; i++)
{
if (x[i] == 0)
{
col_count++;
}
}
cout << max(row_count, col_count);
}
모든 행과 열에서 경비원이 필요한 문제이다 각 행, 열에 X가 들어있는 것을 표현하기 위해 int형 배열 2개를 더 선언해준 후 X가 들어있지 않는 index들을 파악 후 필요한 경비원의 수를 계산하고 비교를 해줘야 한다. 행, 열 중 큰 쪽에 맞춰야 한다