본문 바로가기
Algorithm

[백준 알고리즘] C++ | 2669번 직사각형 네개의 합집합의 면적 구하기

by Baest 2022. 6. 15.

 

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

 

2669번: 직사각형 네개의 합집합의 면적 구하기

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

www.acmicpc.net

 

- 문제

 

 

- 제출한 코드

#include <stdio.h>

int arr[100][100] = { 0 };

int main()
{
	int a; int b; int c; int d;
	int sum = 0;

	for (int i = 1; i <= 4; i++) {
		scanf("%d %d %d %d", &a, &b, &c, &d);
		for (int i = a; i < c; i++) {
			for (int j = b; j < d; j++) {
				arr[i][j] = 1;
			}
		}
	}
	for (int i = 1; i <= 100; i++) {
		for (int j = 0; j <= 100; j++) {
			if (arr[i][j] == 1)
				sum++;
		}
	}
	printf("%d", sum);
}

 

- 풀이과정

#include <stdio.h>

int arr[100][100] = { 0 }; // x,y의 범위만큼 이차원 배열 생성 및 초기화-> Uniform Initialization

int main()
{
	int a; int b; int c; int d;
	int sum = 0; // 초기화 필수

	// 입력
	for (int i = 1; i <= 4; i++) {
		scanf("%d %d %d %d", &a, &b, &c, &d); // & 붙여줘야 해당 값 참조 가능
		for (int i = a; i < c; i++) { // x 좌표 
			for (int j = b; j < d; j++) { // y 좌표
				arr[i][j] = 1; // 해당 좌표의 배열에 1 대입
			}
		}
	}
    // 면적 합산
	for (int i = 1; i <= 100; i++) {
		for (int j = 0; j <= 100; j++) {
			if (arr[i][j] == 1) // 배열의 값에 1이 있을 경우
				sum++;			// sum += 1
		}
	}
	printf("%d", sum);
}