문제 링크입니다: https://www.acmicpc.net/problem/15592
크게는 두가지의 경우 세부적으로는 4가지의 경우를 고려해야하는 문제였습니다.
1. 전광판이 높이를 다 가리는 경우
i) 오른쪽을 덮는 경우
ii) 왼쪽을 덮는 경우
2. 전광판이 양옆을 다 가리는 경우
i) 위쪽을 덮는 경우
ii) 아래쪽을 덮는 경우
*전광판의 모양은 직사각형이기 때문에 높이와 양옆을 각각 일부만 가린다면 무용지물입니다.
#include <iostream>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int x1, x2, x3, x4;
int y1, y2, y3, y4;
cin >> x1 >> y1 >> x2 >> y2;
cin >> x3 >> y3 >> x4 >> y4;
//전광판이 높이를 다 덮는 경우
if (y4 > y2 && y1 > y3)
{
//오른쪽을 다 덮을 경우
if (x2 - x3 > 0 && x2 - x4 < 0)
x2 = x3;
//왼쪽을 다 덮을 경우
if (x4 - x1 > 0 && x1 - x3 > 0)
x1 = x4;
}
//전광판이 양 옆을 다 덮는 경우
if (x4 > x2 && x1 > x3)
{
//위쪽을 다 덮는 경우
if (y2 - y3 > 0 && y2 - y4 < 0)
y2 = y3;
//아래쪽을 다 덮는 경우
if (y4 - y1 > 0 && y1 - y3 > 0)
y1 = y4;
}
cout << (x2 - x1)*(y2 - y1) << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 15594번 Out of Place (0) | 2018.10.01 |
---|---|
백준 15593번 Lifeguards(Bronze) (0) | 2018.10.01 |
백준 1055번 끝이없음 (0) | 2018.09.30 |
백준 6588번 골드바흐의 추측 (0) | 2018.09.29 |
백준 14412번 Ronald (0) | 2018.09.29 |