본문 바로가기
Algorithm

[구현/수학] 백준 2669 직사각형 네개의 합집합의 면적 구하기 - 파이썬(Python)

by jangThang 2022. 7. 1.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2669번: 직사각형 네개의 합집합의 면적 구하기

    평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     직사각형 네개의 합집합의 면적을 구하는 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     

     단순히 입력된 4개의 직사각형 넓이를 구하는 건 쉽지만, 겹쳐진 부분의 넓이를 구하긴 어렵습니다. 따라서 직사각형의 영역을 1*1 정사각형으로 좌표화해서 표시했습니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    board = [[0]*101 for _ in range(101)]
    for _ in range(4):
        x1, y1, x2, y2 = map(int, input().split())
        for i in range(x1, x2):
            for j in range(y1, y2):
                board[i][j] = 1
    
    # 출력
    res = 0
    for i in board:
        res += sum(i)
    print(res)

     겹쳐진 부분을 일일이 계산하기가 힘들기 때문에, 아예 100 * 100 보드판을 만들어서 직사각형의 영역을 표시했습니다. 위와 같이 표시하면, 직사각형이 겹쳐져도 중복해서 넓이를 계산하지 않습니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글