백준/실버

[백준 15973번] 두 박스 (C++)

게임개발기원 2023. 3. 9. 21:29

문제링크 : https://www.acmicpc.net/problem/15973

 

15973번: 두 박스

표준 입력으로 두 박스의 정보가 한 줄에 하나씩 주어진다. 각 박스의 정보는 왼쪽 아래 꼭짓점 좌표 (x1, y1)과 오른쪽 위 꼭짓점 좌표 (x2, y2)로 구성되는데 이들 좌푯값 x1, y1, x2, y2 (x1 < x2, y1 < y2)

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pil pair <int, int>

int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int x1, y1, x2, y2, X1, Y1, X2, Y2;
    cin >> x1 >> y1 >> x2 >> y2;
    cin >> X1 >> Y1 >> X2 >> Y2;

    if(x1 > X1)
    {
        swap(x1, X1);
        swap(x2, X2);
    }

    if(y1 > Y1)
    {
        swap(y1, Y1);
        swap(y2, Y2);
    }

    if(x2 > X1 && y2 > Y1) //포함될 때
    {
        cout << "FACE";
    }
    else if((x2 == X1 && y2 > Y1) || (x2 > X1 && y2 == Y1))  //선이 만날 때
    {
        cout << "LINE";
    }
    else if(x2 == X1 && y2 == Y1)  //점이 만날 때
    {
        cout << "POINT";
    }
    else  //아에 만나지 않을 때
    {
        cout << "NULL";
    }
}

첫 사각형의 x1 좌표가 두 번째 사각형의 x1 좌표보다 크다면 x좌표들을 바꿔준다.

이를 안하면 해당 케이스의 경우 아래 조건문은 의미없는 조건문이 된다.

y좌표의 경우도 똑같은 조건하에 바꿔준다.