2D 평면에서 두 개의 직사각형으로 덮인 전체 면적을 찾고 싶다고 가정합니다. 여기서 각 직사각형은 그림과 같이 왼쪽 하단 모서리와 오른쪽 상단 모서리로 정의됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 너비_1 :=|C-A|, 높이_1 :=|D-B|
- 너비_2 :=|G-E|, 높이_2 :=|H-F|
- 면적:=width_1*height_1 + width_2*height_2
- (GC) 또는 (F>D) 또는 (H
- 반납 구역
- p :=A, E의 최대값
- q :=B, F의 최대값
- r :=C, G의 최소값
- :=D, H의 최소값
- width_3 :=|r-p|
- 높이_3 :=|s-q|
- 반환 영역 - (width_3*height_3)
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(A, B, C, D, E, F, G, H): width_1 = abs(C-A) height_1 = abs(D-B) width_2 = abs(G-E) height_2 = abs(H-F) area = width_1*height_1 + width_2*height_2 if (G<A) or (E>C) or (F>D) or (H<B): return area else: p = max(A,E) q = max(B,F) r = min(C,G) s = min(D,H) width_3 = abs(r-p) height_3 = abs(s-q) return area - (width_3*height_3) A = -3 B = 0 C = 3 D = 4 E = 0 F = -1 G = 9 H = 2 print(solve(A, B, C, D, E, F, G, H))
입력
-3, 0, 3, 4, 0, -1, 9, 2
출력
45