본문 바로가기
전공공부/코딩테스트

(c++) 백준 "10163. 색종이"

by 시아나 2022. 5. 10.

https://www.acmicpc.net/problem/10163

 

10163번: 색종이

평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘

www.acmicpc.net


#include <iostream>
#include <vector>

using namespace std;
int N;
vector<vector<int>> list;
int check[2000][2000] = { 0 };

void solution() {
	for (int t = 0; t < list.size();t++) {
		vector<int> v = list[t];
		for (int i = 0; i < v[2]; i++) { //세로
			for (int k = 0; k < v[3]; k++) {//가로
				check[v[0] + i][v[1] + k] = t+1;
			}
		}
	}
	int answer[200] = { 0 };
	for (int i = 0; i <= 1001; i++) {
		for (int k = 0; k <= 1001; k++) {
			if (check[i][k] > 0) {
				answer[check[i][k]]++;
			}
		}
	}
	for (int i = 1; i <= list.size(); i++) {
		cout << answer[i] << endl;
	}
}

int main() {
	cin >> N;
	for (int i = 0; i < N; i++) {
		int x, y, w, h;
		cin >> x >> y >> w >> h;
		list.push_back({ x,y,w,h });
	}
	solution();
	return 0;
}