Programming/백준

백준 2527 - 직사각형 (파이썬)

pental 2025. 3. 28. 12:36

https://www.acmicpc.net/problem/2527

풀이

두 직사각형이 주어졌을 때, 겹치는 영역이 어떤 형태인지 판단하는 문제이다.

다양한 겹침의 경우를 다음 네가지 중 하나로 분류해야한다.

  1. a → 직사각형이 겹치는 경우 (면적으로 겹침)
  2. b → 직사각형이 선분으로 겹침
  3. c → 꼭짓점만 겹침
  4. 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])