※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2527번 문제인 직사각형이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2527
2527번: 직사각형
4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사
www.acmicpc.net
각 직사각형의 영역은 상변을 나타내는 직선의 아래 영역, 하변을 나타내는 직선의 위쪽 영역, 좌변을 나타내는 직선의 오른쪽 영역, 우변을 나타내는 직선의 왼쪽 영역과 같은 네 영역의 교집합으로 생각할 수 있다. 따라서 두 직사각형의 겹치는 영역은 위와 같이 직사각형을 분석할 때의 여덟 영역의 교집합으로 생각할 수 있다.
해당 영역이 점으로 나타나는지 선으로 나타나는지 면으로 나타나는지 아니면 공집합으로 나타나는지를 판단해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int X1, Y1, X2, Y2;
int A1, B1, A2, B2;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 0; i < 4; i++) {
cin >> X1 >> Y1 >> X2 >> Y2 >> A1 >> B1 >> A2 >> B2;
int xL = max(X1, A1), yL = max(Y1, B1), xR = min(X2, A2), yR = min(Y2, B2);
if (xL > xR || yL > yR) cout << 'd' << '\n';
else if (xL == xR && yL == yR) cout << 'c' << '\n';
else if (xL == xR || yL == yR) cout << 'b' << '\n';
else cout << 'a' << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 27496 // C++] 발머의 피크 이론 (0) | 2023.02.23 |
---|---|
[BOJ 4500 // C++] “Bubble Gum, Bubble Gum, in the dish, how many pieces do you wish?” (0) | 2023.02.23 |
[BOJ 1105 // C++] 팔 (0) | 2023.02.22 |
[BOJ 1326 // C++] 폴짝폴짝 (0) | 2023.02.22 |
[BOJ 2531 // C++] 회전 초밥 (0) | 2023.02.22 |