[BOJ] 1652 누울 자리를 찾아라

GirlFriend-Yerin·2020년 8월 27일
0

알고리즘

목록 보기
64/131

Note

영식이가 누울 수 있는 자리의 갯수를 가로와 세로로 구분해서 출력해주자.

입력은 문자열로 주어진다. 문자 사이에 공백이 없다. 한번에 받아야 한다.
수학탭에 있지만 왜 수학문제인지 조금 궁금하다. 문자열 처리에 좀 더 가깝지 않을까 하는 의문이 들기도 한다.
가로와 세로로 구분해서 문자 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;
}

2019-01-21 10:30:00에 Tistory에서 작성되었습니다.

profile
개발할때 가장 행복한 개발자입니다.

0개의 댓글