반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 223 | Rectangle Area | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/rectangle-area/
문제
Given the coordinates of two rectilinear rectangles in a 2D plane, return the total area covered by the two rectangles.
The first rectangle is defined by its bottom-left corner (ax1, ay1) and its top-right corner (ax2, ay2).
The second rectangle is defined by its bottom-left corner (bx1, by1) and its top-right corner (bx2, by2).
조건
- $-10^4$ <= ax1 <= ax2 <= $10^4$
- $-10^4$ <= ay1 <= ay2 <= $10^4$
- $-10^4$ <= bx1 <= bx2 <= $10^4$
- $-10^4$ <= by1 <= by2 <= $10^4$
내 풀이
직사각형 두 개의 넓이를 더한 뒤 겹치는 부분의 넓이를 빼면 된다.
겹치는 부분의 넓이는, 아래 twice의 식을 이용한다.
min(ax2,bx2) - max(ax1,bx1)는 직사각형이 겹치는 부분이 있을 때 양수로 나오고, 그렇지 않다면 음수가 나올 것이다.
그렇기때문에 max(~, 0)으로 한번 감싸준다.
코드
class Solution:
def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
rec1 = (ax2 - ax1) * (ay2 - ay1)
rec2 = (bx2 - bx1) * (by2 - by1)
twice = max(min(ax2,bx2) - max(ax1,bx1),0) * max(min(ay2,by2) - max(ay1,by1),0)
return rec1 + rec2 - twice
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 36 | Valid Sudoku | Python (0) | 2022.11.23 |
---|---|
[LeetCode] 1926 | Nearest Exit from Entrance in Maze | Python (0) | 2022.11.21 |
[LeetCode] 374 | Guess Number Higher or Lower | Python (0) | 2022.11.16 |
[LeetCode] 947 | Most Stones Removed with Same Row or Column | Python (0) | 2022.11.14 |
[LeetCode] 1047 | Remove All Adjacent Duplicates In String | Python (0) | 2022.11.10 |
Comments