본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2527 직사각형

by Alan_Kim 2024. 2. 15.
728x90
반응형

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

 

2527번: 직사각형

4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사

www.acmicpc.net

 

문제 해결

  • 조건을 잘 분리해서 출력하는 문제
  • 우선 겹치지 않는 경우부터 잡는 것이 좋다.
  • 두 직사각형 각각의 x, y의 최소 값 좌표와 최댓 값 좌표가 있는데 어떤 직사각형의 최솟값 좌표가 다른 직사각형의 최댓값 좌표보다 큰 것이 존재하면 겹칠 수 없다.(x, y 둘 중 하나라도)
  • 만약 어떤 직사각형의 최솟값 좌표가 다른 직사각형 최댓값 좌표와 같은 것이 존재한다면 겹쳐서 선이나 점이 만들어진다.
  • 만약 x, y 모두 같다면 점이 만들어지고 아니면 선분이 만들어진다.
  • 위의 사항에 해당하지 않으면 무조건 직사각형의 겹치는 공간이 만들어진다.

 

CODE

import sys
from collections import deque
input = sys.stdin.readline


def solve(x1, y1, p1, q1, x2, y2, p2, q2):

    if p1< x2 or p2 < x1 or y1 > q2 or q1 < y2:
        print('d')

    elif x1==p2 or x2==p1:
        if q1 == y2 or q2 == y1:
            print('c')
        else:
            print('b')
    elif q1==y2 or q2==y1:
        print('b')
    else:
        print('a')

if __name__ == '__main__':
    for _ in range(4):
        x1, y1, p1, q1, x2, y2, p2, q2 = map(int, input().split())
        solve(x1, y1, p1, q1, x2, y2, p2, q2)
728x90
반응형

댓글