Programming/백준
백준 2527 - 직사각형 (파이썬)
pental
2025. 3. 28. 12:36
https://www.acmicpc.net/problem/2527
풀이
두 직사각형이 주어졌을 때, 겹치는 영역이 어떤 형태인지 판단하는 문제이다.
다양한 겹침의 경우를 다음 네가지 중 하나로 분류해야한다.
- a → 직사각형이 겹치는 경우 (면적으로 겹침)
- b → 직사각형이 선분으로 겹침
- c → 꼭짓점만 겹침
- d → 전혀 겹치지 않음
x축 겹침 여부 판단 및 y축 겹침 여부 판단을 진행하면 된다.
위에서 구한 x_intersection, y_intersection 값을 조합해서 미리 정의된 결과 테이블에서 문자를 출력하면 답을 쉽게 구할 수 있다.
코드
# 백준 2527 - 직사각형
# 분류 : 기하학
answer = [
['d', 'd', 'd'],
['d', 'c', 'b'],
['d', 'b', 'a']
]
for _ in range(4) :
x1, y1, x2, y2, x3, y3, x4, y4 = map(int, input().split())
# x축
if x2 < x3 or x4 < x1 :
x_intersection = 0
elif x2 == x3 or x4 == x1 :
x_intersection = 1
else :
x_intersection = 2
# y축
if y2 < y3 or y4 < y1 :
y_intersection = 0
elif y2 == y3 or y4 == y1 :
y_intersection = 1
else :
y_intersection = 2
print(answer[x_intersection][y_intersection])