코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
using namespace std;
int n, rres, cres;
string s;
char a[103][103];
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
FASTIO();
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
for (int j = 0; j < n; j++) {
a[i][j] = s[j];
}
}
for (int i = 0; i < n; i++) {
int row = 0;
for (int j = 0; j < n; j++) {
if (a[i][j] == '.') {
row++;
}
// x를 만나면 row의 개수 확인
else {
if (row >= 2) rres++; // 누울 수 있는 경우
row = 0;
}
}
if (row >= 2) rres++; // x를 만나지 못하고 끝난 경우 확인
}
for (int i = 0; i < n; i++) {
int col = 0;
for (int j = 0; j < n; j++) {
if (a[j][i] == '.') {
col++;
}
else {
// x를 만나면 col의 개수 확인
if (col >= 2) cres++; // 누울 수 있는 경우
col = 0;
}
}
// x를 만나지 못하고 끝난 경우 확인
if (col >= 2) cres++;
}
cout << rres << " " << cres << '\n';
return 0;
}
풀이
.의 개수를 세어주다가 X를 만나면 .의 개수를 확인하고 누울 수 있는지 확인했다. 그리고 X를 만나지 않고 반복문이 끝나는 경우가 있을 수 있으므로 이중 for문이 끝날 때 한 번 더 확인해주었다.
X를 만날 때마다 확인한 이유는
.. X ..
과 같은 경우가 있을 수 있기 때문이다. 테케만 보고 문제에 접근하면 안된다는 것을 다시 한 번 상기시켜준 문제.
'백준' 카테고리의 다른 글
[백준] 18436번 수열과 쿼리 37 C++ 코드 (1) | 2024.11.11 |
---|---|
[백준] 1747번 소수&팰린드롬 C++ 코드 (2) | 2024.11.05 |
[백준] 1110번 더하기 사이클 C++ 코드 (0) | 2024.11.05 |
[백준] 2621번 카드게임 C++ 코드 (1) | 2024.11.05 |
[백준] 10819번 차이를 최대로 C++ 코드 (3) | 2024.11.05 |