728x90
반응형
1236번: 성 지키기
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다
www.acmicpc.net
한 명의 경비원은 하나의 열과 하나의 행을 보호할 수 있다
- 제목
성 지키기
- 조건
시간 제한 : 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 |