자기개발👨‍💻/코딩 알고리즘

[c++] 백준 2669 직사각형 네개의 합집합의 면적 구하기

천숭이 2020. 8. 11. 21:39
#include<iostream>
#include<algorithm>
using namespace std;

int rec[101][101];
/*🧚‍♀️🧚🧚‍♂️*/
int main() {
	int sum = 0;
	for (int i = 0; i < 4; i++) {
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;

		for (int j = x1; j < x2; j++) {
			for (int k = y1; k < y2; k++)
				rec[j][k] = 1;
		}
	}
	for (int i = 0; i < 101; i++) {
		for (int j = 0; j < 101; j++) {
			sum += rec[i][j];
		}
	}
	cout << sum;
}

먼저 입력조건이 정해져있기 때문에, 제일 큰 사각형을 만들어준다.

그리고 입력 받을 때마다, 해당하는 영역을 바로 1로 채워준다.

누적되는 값이 아니기 때문에 자동으로 중복을 없애준다.

따라서 이중for문을 이용해 sum을 구해주면 답!