알고리즘/BOJ

백준 15592번 Blocked Billboard II

꾸준함. 2018. 10. 1. 13:13

문제 링크입니다: 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