알고리즘 공부/파이썬(Python)

백준 2527번 직사각형 파이썬

마달랭 2024. 6. 28. 19:44
반응형

리뷰

생각보다 문제를 간단하게 생각하는 사고력이 많이 필요한 것 같다.

문제 풀이

  1. 사각형1과 사각형2의 왼쪽 아래 및 오른쪽 위 x, y좌표를 각각 받아온다.
  2. 두 사각형의 동일한 꼭지점의 x, y 좌표를 왼쪽과 아래의 경우 max로 오른쪽과 위의 경우 min으로 받아온다.
  3. 왼쪽 사각형의 오른쪽x좌표가 오른쪽 사각형의 왼쪽x좌표 크거나 아래쪽 사각형의 위쪽y좌표가 위쪽 사각형의 아래쪽y좌표보다 클 경우 두 사각형은 절대 만나지 않는다, d출력
  4. 왼쪽 혹은 아래쪽 사각형의 오른쪽 가장자리 꼭지점이 오른쪽 혹은 위쪽 사각형의 왼쪽 꼭지점과 동일할 경우 꼭지점이 닿아있는 케이스 이다, c출력
  5. 왼쪽 혹은 아래쪽 사각형의 오른쪽 선분이나 위쪽 선분이 오른쪽 혹은 위쪽 사각형의 왼쪽 선분이나 아래쪽 선분이 일치할 경우 선분이 맞닿은 케이스 이다. b출력
  6. 나머지 케이스인 경우 사각형이 겹치는 경우이므로 a출력

참고 사항

elif로 처리하되 b케이스보다 c케이스가 위에 있어야 혼동이 없다. if로 처리할 경우 별도 함수를 사용해 return 처리해 준다.

정답 코드

def q2527():
    # 백준 2527번 직사각형 파이썬
    for _ in range(4):
        x1, y1, p1, q1, x2, y2, p2, q2 = map(int, input().split())
        left = max(x1, x2)
        right = min(p1, p2)
        bottom = max(y1, y2)
        top = min(q1, q2)
        if left > right or bottom > top:
            print('d')
        elif left == right and bottom == top:
            print('c')
        elif left == right or bottom == top:
            print('b')
        else:
            print('a')
q2527()

 

728x90
반응형