영식이가 누울 수 있는 자리의 갯수를 가로와 세로로 구분해서 출력해주자.
입력은 문자열로 주어진다. 문자 사이에 공백이 없다. 한번에 받아야 한다.
수학탭에 있지만 왜 수학문제인지 조금 궁금하다. 문자열 처리에 좀 더 가깝지 않을까 하는 의문이 들기도 한다.
가로와 세로로 구분해서 문자 X가 나오기 전까지 . 의 개수를 세서 개수가 2 이상이면 가로/세로의 수를 1 늘려주면 된다.
x가 나오기 전에 끝나는 경우가 존재 하기 때문에 다음 줄로 넘어가기전에 개수를 한번 더 처리해 주어야 한다.
#include <iostream>
using namespace std;
const short MAX = 100;
char board[MAX][MAX + 1];
int main()
{
int n;
int rowCount = 0, colCount = 0;
cin >> n;
for (int i = 0; i < n; i++)
cin >> board[i];
// row
for (int i = 0; i < n; i++)
{
int count = 0;
for (int j = 0; j < n; j++)
{
if (board[i][j] == '.')
count++;
else
{
if (count > 1)
rowCount++;
count = 0;
}
}
if (count > 1)
rowCount++;
}
// col
for (int i = 0; i < n; i++)
{
int count = 0;
for (int j = 0; j < n; j++)
{
if (board[j][i] == '.')
count++;
else
{
if (count > 1)
colCount++;
count = 0;
}
}
if (count > 1)
colCount++;
}
cout << rowCount << ' ' << colCount;
return 0;
}
2019-01-21 10:30:00에 Tistory에서 작성되었습니다.