관리 메뉴

Kim's Programming

1979. 어디에 단어가 들어갈 수 있을까 본문

SW ExpertAcademy/D2

1979. 어디에 단어가 들어갈 수 있을까

Programmer. 2018. 12. 1. 02:37

1979. 어디에 단어가 들어갈 수 있을까

문제출처: https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PuPq6AaQDFAUq&categoryId=AV5PuPq6AaQDFAUq&categoryType=CODE




풀이 방법



<코드>


#include<iostream>
using namespace std;

int main(int argc, char** argv)
{
	std::ios::sync_with_stdio(false);
	std::cout.tie(nullptr);
	std::cin.tie(nullptr);

	int test_case;
	int T;
	cin >> T;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		int nValue{ 0 }, wordLength{ 0 };
		std::cin >> nValue >> wordLength;

		int* dataArray = new int[nValue*nValue]{ 0, };

		for (int i = 0; i < nValue; i++)
			for (int j = 0; j < nValue; j++)
				std::cin >> dataArray[nValue*i + j];

		int answer{ 0 };

		for (int i = 0; i < nValue; i++)		//Row
		{
			int checker{ 0 };
			bool prevState = false;

			for (int j = 0; j < nValue; j++)
			{
				if (*(dataArray + (nValue * i) + j) == 1)
				{
					prevState = true;
					checker++;
				}
				else
					prevState = false;

				if (!prevState || j == nValue - 1)
				{
					if (checker == wordLength)
						answer++;
					checker = 0;
				}
			}
		}

		for (int i = 0; i < nValue; i++)		//Col
		{
			int checker{ 0 };
			bool prevState = false;

			for (int j = 0; j < nValue; j++)
			{
				if (*(dataArray + i + (j*nValue)) == 1)
				{
					prevState = true;
					checker++;
				}
				else
					prevState = false;

				if (!prevState || j == nValue - 1)
				{
					if (checker == wordLength)
						answer++;
					checker = 0;
				}
			}
		}

		delete[] dataArray;

		std::cout << "#" << test_case << " " << answer << "\n";
	}

	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

'SW ExpertAcademy > D2' 카테고리의 다른 글

1984. 중간 평균값 구하기  (0) 2018.12.01
1983. 조교의 성적 매기기  (0) 2018.12.01
1976. 시각 덧셈  (0) 2018.12.01
1974. 스도쿠 검증  (0) 2018.12.01
1970. 쉬운 거스름돈  (0) 2018.12.01