정신과 시간의 방
카테고리
작성일
2024. 7. 31. 12:05
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>

using namespace std;

int main()
{
	int arr[101][101] = { 0 };

	int n = 0;
	int count = 0;

	cin >> n;

	for (int i = 0; i < n; i++)
	{
		int startX = 0, startY = 0;

		cin >> startX >> startY;

		for (int y = startY; y < startY + 10; y++)
		{
			for (int x = startX; x < startX + 10; x++)
			{
				if (arr[y][x] == 0)
				{
					count++;
					arr[y][x] = 1;
				}
			}
		}
	}

	cout << count;

	return 0;
}

 

 

  • 메모
    가로, 세로의 크기가 각각 100이라고 했으므로 y가 101, x가 101인 2차원 배열을 사용했다.
    색종이의 넓이를 체크하기 위해서 색종이가 있는 부분은 1, 없는 부분은 0으로 가정하고 카운팅해주었다.

    카운팅은 색종이의 가로 세로 길이는 각각 10이므로 입력받은 x의 시작값, y의 시작값에서 10씩 더해준 값까지 순회하며 체크하는 방식을 사용했다.

    현재 체크하려는 배열에 색종이가 없는 경우(값이 0) 해당하는 값을 1로 바꿔주면서 동시에 카운팅을 +1 해주면 된다.