Link https://www.acmicpc.net/problem/1652
소스결과 1992 KB / 0 ms
출처 Baekjoon
언어 C++ 17
분류 수학
설명
영식이가 누울 수 있는 자리의 갯수를 가로와 세로로 구분해서 출력해주자.
입력은 문자열로 주어진다. 문자 사이에 공백이 없다. 한번에 받아야 한다.
수학탭에 있지만 왜 수학문제인지 조금 궁금하다. 문자열 처리에 좀 더 가깝지 않을까 하는 의문이 들기도 한다.
가로와 세로로 구분해서 문자 X가 나오기 전까지 . 의 개수를 세서 개수가 2 이상이면 가로/세로의 수를 1 늘려주면 된다.
x가 나오기 전에 끝나는 경우가 존재 하기 때문에 다음 줄로 넘어가기전에 개수를 한번 더 처리해 주어야 한다.
알고리즘
1. 방의 정보를 받아온다.
2. 가로 / 세로 방향으로 X 가 나오기 전까지 . 의 개수를 센다. 2 이상이면 가로 / 세로 방향의 누울자리 수를 + 1 해준다.
3. 가로, 세로 순서로 값을 출력해 준다.
소스코드
#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;
}
'Algorithm > Mathematics' 카테고리의 다른 글
BaekJoon 1074 Z (0) | 2019.01.29 |
---|---|
BaekJoon 1076 저항 (0) | 2019.01.21 |
BackJoon 1978 소수 찾기 (0) | 2019.01.21 |
BaekJoon 1094 막대기 (0) | 2019.01.10 |
BaekJoon 2869 달팽이는 올라가고싶다. (0) | 2019.01.05 |