Computer Science/Algorithm Problem

백준] 2669 - 직사각형 네개의 합집합의 면적 구하기(KOI 1996)

TwinParadox 2018. 4. 14. 08:44
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭지점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각형의 오른쪽 위 꼭지점의 x좌표, y좌표이다. 모든 x좌표와 y좌표는 1이상이고 100이하인 정수이다.




출력

첫 줄에 네개의 직사각형이 차지하는 면적을 출력한다.




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	int d[101][101] = { 0, }, sum = 0;
	int x1, y1, x2, y2;
	for(int i=0;i<4;i++)
	{
		cin >> x1 >> y1 >> x2 >> y2;
		for (int i = x1; i < x2; i++)
			for (int j = y1; j < y2; j++)
				d[i][j]++;
	}
	for (int i = 0; i <= 100; i++)
		for (int j = 0; j <= 100; j++)
			if (d[i][j])
				sum++;
	cout << sum;
}




Tip

문제의 제한 조건이 그렇게 빡빡하지 않기 때문에 2차원 배열에 직사각형을 매핑하고 그 영역들을 계산하는 형식으로 문제를 풀어도 정답으로 인정받을 수 있다. 



728x90
728x90