[백준 / C언어] 2527번: 직사각형

728x90
728x90

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

 

2527번: 직사각형

4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사

www.acmicpc.net

2527번 문제 설명 1
2527번 문제 설명 2
2527번 문제 설명 3

 

난이도: solved.ac 실버 1

 

알고리즘 분류


수학, 기하학, 많은 조건 분기

 

접근 방법


두 개의 사각형 A, B가 있다고 해보자.

두 개의 직사각형

먼저 공통부분이 없는 d의 경우에 어떤 모양을 갖고 있는지 살펴보자.

아래와 같은 네 가지의 경우에 공통부분을 갖지 않게 된다.

두 개의 직사각형이 만나지 않는 경우

그리고 꼭지점끼리만 접하는 c의 모양은 어떻게 되는지 살펴보자.

아래와 같이 네 가지의 경우만 가능하다.

두 개의 사각형이 꼭지점끼리 맞닿아 있는 경우

그리고 선분끼리 접하는 경우인 b일 때는 어떻게 되는지 보자.

이 경우도 아래와 같이 네 가지의 경우만 가능하다.

두 개의 직사각형이 한 변으로 맞닿아 있는 경우

위의 12가지 경우를 제외하면 a의 경우가 된다.

 

코드


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
	int test = 4, x1, y1, p1, q1, x2, y2, p2, q2;
	while (test--) {
		scanf("%d %d %d %d %d %d %d %d", &x1, &y1, &p1, &q1, &x2, &y2, &p2, &q2);
		if (x1 > p2 || y1 > q2 || x2 > p1 || y2 > q1)
			printf("d\n");
		else if ((x1 == p2 && y1 == q2) || (x2 == p1 && y2 == q1) || (x1 == p2 && q1 == y2) || (x2 == p1 && q2 == y1))
			printf("c\n");
		else if (x1 == p2 || y1 == q2 || x2 == p1 || y2 == q1)
			printf("b\n");
		else
			printf("a\n");
	}
	return 0;
}
반응형