728x90
반응형
한 명의 경비원은 하나의 열과 하나의 행을 보호할 수 있다
- 제목
성 지키기
- 조건
시간 제한 : 2 초
메모리 제한 : 128 MB
- 문제
영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.
성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.
- 입력
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.
- 출력
첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.
예제 입력1 | 예제 출력1 |
4 4 .... .... .... .... |
4 |
예제 입력2 | 예제 출력2 |
3 5 XX... .XX.. ...XX |
0 |
예제 입력2 | 예제 출력3 |
5 8 ....XXXX ........ XX.X.XX. ........ ........ |
3 |
#include <iostream>
#include <algorithm>
using namespace std;
#define endl '\n'
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
char table[50][50];
int N, M;
cin >> N >> M;
for(int n = 0 ; n < N ; n++){
for(int m = 0 ; m < M ; m++){
cin >> table[n][m];
}
}
int rowCheck = 0;
for(int n = 0 ; n < N ; n++){
bool check = true;
for(int m = 0 ; m < M ; m++){
if(table[n][m] == 'X'){
check = false;
break;
}
}
if(check) rowCheck++;
}
int colCheck = 0;
for(int n = 0 ; n < M ; n++){
bool check = true;
for(int m = 0 ; m < N ; m++){
if(table[m][n] == 'X'){
check = false;
break;
}
}
if(check) colCheck++;
}
cout << max(rowCheck, colCheck) << endl;
return 0;
}
728x90
반응형
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 20955 - 민서의 응급 수술 (0) | 2022.08.17 |
---|---|
[BOJ/백준] 1261 - 알고스팟 (0) | 2022.08.17 |
[BOJ/백준] 5639 - 이진 검색 트리 (0) | 2022.08.16 |
[BOJ/백준] 25426 - 일차함수들 (0) | 2022.08.16 |
[BOJ/백준] 25425 - 운동회 (0) | 2022.08.16 |