leetcode 223, Rectangle Area

NJW·2022년 11월 17일
0

코테

목록 보기
113/170

들어가는 말

두 개의 사각형 범위가 주어질 때, 정사각형들의 전체 범위를 구하는 문제다. 즉, 'A사각형 + B사각형 - A와 B의 공통 범위'를 구하는 문제

코드 설명

1) 두 사각형의 크기 구하기

1-1) 문제에서는 각 변수들의 크기가 1<=2라고 했다. 그러므로 두개의 사각형을 구할 때는 각 x와 y의 2에서 1 을 빼면 가로와 세로의 길이가 나온다.

1-2) 그리고 구한 가로와 세로의 길이를 곱하면 된다.

2) 겹치는 부분 구하기
2-1) 그림을 그려보면 간단한데, 가장 작은 수의 최대와 가장 큰 수의 최소를 구한 다음 최소 값이 최대 값보다 작거나 크면 최소 값에서 최대 값을 빼 길이를 구한다.

파란색 부분은 ax1과 bx1의 최대값인 동시에 ay1와 by1의 최대값이다.
보라색 부분은 ax2와 bx2의 최소값이다.
주황색 부분은 ay2과 by2의 최소값이다.

2-2) 이렇게 각 부분의 위치를 구한 다음, 중요한 일이 하나 더 있는데 구한 최소값이 최대값보다 큰지 확인하는 것이다. 그림을 보면 알 수 있듯이 최대값은 언제나 최소값보다 작아야 한다. 만일 최대값이 최소값보다 크다면 이는 겹치는 부분이 없다는 뜻이다.

2-3) 겹치는 부분이 존재한다면 각 x와 y의 최소값에서 최대값을 빼서 곱한 값을 구한다. 이 값이 겹치는 사각형의 크기다.

3) 전체 사각형 부분 구하기
3-1) 1)에서 구한 값 사각형 a와 b를 더하고 2)에서 구한 값을 빼면 전체 사각형이 나온다.

여담

이 문제는 수학적인 문제였다. 처음에는 어떤 알고리즘을 이용할까 싶었지만, 겹치는 부분이 없을 때만 잘 판단해 준다면 비교적 쉽게 풀 수 있었다.

profile
https://jiwonna52.tistory.com/

0개의 댓글