PS/프로그래머스 입문 100제
[프로그래머스] LV.0 직사각형의 넓이 구하기 - 자바 [90/100]
yaho!!
2024. 7. 5. 23:03
💬 문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
🚫 제한 사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
📢 입출력 예
👨🏫 입출력 예 설명
📃 제출 코드
class Solution {
public int solution(int[][] dots) {
int answer = 0;
int max_X = Integer.MIN_VALUE;
int min_X = Integer.MAX_VALUE;
int max_Y = Integer.MIN_VALUE;
int min_Y = Integer.MAX_VALUE;
for (int i = 0; i < dots.length; i++) {
if(max_X < dots[i][0]) {
max_X = dots[i][0];
}
if(min_X > dots[i][0]) {
min_X = dots[i][0];
}
if(max_Y < dots[i][1]) {
max_Y = dots[i][1];
}
if(min_Y > dots[i][1]) {
min_Y = dots[i][1];
}
}
answer = Math.abs(max_X - min_X) * Math.abs(max_Y - min_Y);
return answer;
}
}
✏ 해결방법 & 배운점
- 변수 초기화:
- max_X, min_X는 x좌표의 최대값과 최소값을 저장합니다.
- max_Y, min_Y는 y좌표의 최대값과 최소값을 저장합니다.
- 초기값으로 max_X와 max_Y는 가장 작은 값인 Integer.MIN_VALUE로, min_X와 min_Y는 가장 큰 값인 Integer.MAX_VALUE로 설정합니다.
- 좌표 순회:
- for 루프를 사용하여 주어진 네 좌표 dots를 순회하면서 x와 y의 최대값과 최소값을 갱신합니다.
- 현재 좌표의 x값이 max_X보다 크면 max_X를 갱신합니다.
- 현재 좌표의 x값이 min_X보다 작으면 min_X를 갱신합니다.
- 현재 좌표의 y값이 max_Y보다 크면 max_Y를 갱신합니다.
- 현재 좌표의 y값이 min_Y보다 작으면 min_Y를 갱신합니다.
- for 루프를 사용하여 주어진 네 좌표 dots를 순회하면서 x와 y의 최대값과 최소값을 갱신합니다.
- 넓이 계산:
- 직사각형의 넓이는 (최대 x값 - 최소 x값)과 (최대 y값 - 최소 y값)의 곱으로 구합니다.
- Math.abs를 사용하여 양수 값을 보장합니다.
- 결과 반환:
- 계산된 넓이를 answer에 저장하고 반환합니다.
예제
주어진 좌표가 [[1, 1], [2, 1], [2, 2], [1, 2]]일 경우를 예로 들어 설명하겠습니다.
- 초기값 설정:
- max_X = Integer.MIN_VALUE, min_X = Integer.MAX_VALUE
- max_Y = Integer.MIN_VALUE, min_Y = Integer.MAX_VALUE
- 좌표 순회 후 값 갱신:
- 첫 번째 좌표 (1, 1) 검사 후: max_X = 1, min_X = 1, max_Y = 1, min_Y = 1
- 두 번째 좌표 (2, 1) 검사 후: max_X = 2, min_X = 1, max_Y = 1, min_Y = 1
- 세 번째 좌표 (2, 2) 검사 후: max_X = 2, min_X = 1, max_Y = 2, min_Y = 1
- 네 번째 좌표 (1, 2) 검사 후: max_X = 2, min_X = 1, max_Y = 2, min_Y = 1
- 넓이 계산:
- 가로 길이 = Math.abs(2 - 1) = 1
- 세로 길이 = Math.abs(2 - 1) = 1
- 넓이 = 1 * 1 = 1
결과적으로, 주어진 좌표로 이루어진 직사각형의 넓이는 1이 됩니다.