백준 15973. 두 박스
https://www.acmicpc.net/problem/15973
15973번: 두 박스
표준 입력으로 두 박스의 정보가 한 줄에 하나씩 주어진다. 각 박스의 정보는 왼쪽 아래 꼭짓점 좌표 (x1, y1)과 오른쪽 위 꼭짓점 좌표 (x2, y2)로 구성되는데 이들 좌푯값 x1, y1, x2, y2 (x1 < x2, y1 < y2)
www.acmicpc.net
먼저 문제에서 첫번째로 주어지는 사각형이 왼쪽에 있다는 보장이 없기 때문에,
케이스를 나누기 쉽게 좌측하단 꼭짓점이 더 왼쪽에 있는 사각형이 왼쪽 사각형, 나머지 사각형이 오른쪽 사각형이 되도록 한다.
그 후에 케이스는 왼쪽 사각형의 오른쪽면과, 오른쪽 사각형의 왼쪽면을 기준으로 나눴다.
1) 왼쪽 사각형의 오른쪽면과, 오른쪽 사각형의 왼쪽면이 같을때
이 경우에는 사각형들의 y값에 따라 POINT 거나 LINE 이거나 NULL이 될수 있다.
1-1) 왼쪽 사각형의 오른쪽상단 꼭짓점과, 오른쪽 사각형의 좌측하단 꼭짓점이 같을때 = "POINT"
1-2) 왼쪽 사각형의 오른쪽하단 꼭짓점과, 오른쪽 사각형의 좌측상단 꼭짓점이 같을떄 = "POINT"
1-3) 왼쪽 사각형의 아랫면이, 오른쪽 사각형의 윗면 보다 위에 있을때 = "NULL"
1-4) 이 외에는 서로 면이 맞닿아 있는 "LINE" 이다.
2) 오른쪽 사각형의 왼쪽면이, 왼쪽 사각형의 오른쪽 면보다 왼쪽에 있을때
이 경우에는 사각형들의 y값에 따라 LINE, NULL, FACE가 될 수 있다.
2-1) 왼쪽 사각형의 윗면과, 오른쪽 사각형의 아랫면이 같을 떄 = "LINE"
2-2) 왼쪽 사각형의 아랫면과, 오른쪽 사각형의 윗면이 같을때 = "LINE"
2-3) 왼쪽 사각형의 윗면이, 오른쪽 사각형의 아랫면 보다 아래 있을때 = "NULL"
2-4) 왼쪽 사각형의 아랫면이, 오른쪽 사각형의 윗면보다 위에 있을때 = "NULL"
2-5) 이 외에는 "FACE"
3) 왼쪽 사각형의 오른쪽 면이, 오른쪽 사각형의 왼쪽면보다 왼쪽에 있을때
이 경우에는 항상 "NULL" 이다.
2022.02.20
1번 사각형의 x축, 2번 사각형의 x축
1번 사각형의 y축, 2번 사각형의 y축
이렇게 나눠서 생각한다.
1번 사각형의 두 x축을 x1, x2
2번 사각형의 두 x축을 x3, y3
1번 사각형의 두 y축을 y1, y2
2번 사각형의 두 y축을 y3, y4
라고 하고
두 사각형의 x축과 y축의 상태를 생각해본다.
1) x2와 x3이 떨어져있는 경우
2) x2와 x3이 맞닿아 있는 경우
3) x3이 x1,x2 사이에 있는 경우 or x4이 x1,x2 사이에 있는 경우
4) x4와 x1이 맞닿아 있는 경우
5) x4가 x1과 떨어져 있는 경우
1,5번 세트
2,4번 세트
y축도 동일.
x축과 y축의 상태를 구한후에는 이제 사각형으로 생각해본다.
- x축 or y축이 떨어져있는 경우 (x축이 1번인 경우 or y축이 1번인 경우) : NULL
- x축도 맞닿아 있고, y축도 맞닿아 있는 경우 (x축 2번 and y축 y축 2번) : POINT
- x축은 맞닿아 있는데, y축은 겹쳐 있는 경우 (x축 2번 and y축 3번) : LINE
- x축은 서로 겹쳐있고, y축은 맞닿아 있는 경우 (x축 3번 and y축 2번) : LINE
- x축은 서로 겹쳐있고, y축도 겹쳐져 있는 경우 (x축 and y축 3번) : FACE