728x90
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
입출력 예
| [[1, 1], [2, 1], [2, 2], [1, 2]] | 1 |
| [[-1, -1], [1, 1], [1, -1], [-1, 1]] | 4 |
입출력 예 #1
- 좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.
입출력 예 #2
- 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.
class Solution {
public int solution(int[][] dots) {
int answer = 0;
int maxH = dots[0][0];
int minH = dots[0][0];
int maxW = dots[0][1];
int minW = dots[0][1];
for(int i=1; i<dots.length; i++) {
maxH = Math.max(maxH, dots[i][0]);
minH = Math.min(minH, dots[i][0]);
maxW = Math.max(maxW, dots[i][1]);
minW = Math.min(minW, dots[i][1]);
}
answer = (maxH-minH)*(maxW-minW);
return answer;
}
}
힌트를 얻어서
가로의 (가장 큰 좌표 - 가장 작은 좌표) x 세로의 (가장 큰 좌표 - 가장 작은 좌표)를 구하면 되는 간단한 문제였다.
처음에 헷갈렸던 부분이 좌표 - 좌표를 할 때, 양수-양수, 음수-음수, 양수 - 음수 이 세가지 경우를 다 나눠서 구해야한다고 생각했는데 결국 Integer클래스의 메서드를 이용해서 (가장 큰 값 - 가장 작은 값)을 하면 위의 세가지 경우에 다 부합하는 길이가 나온다.
반응형
'CodingTest > Programmers' 카테고리의 다른 글
| [프로그래머스] Lv0 치킨 쿠폰 (0) | 2023.02.06 |
|---|---|
| [프로그래머스] Lv0 로그인 성공? (1) | 2023.02.02 |
| [프로그래머스] Lv0 캐릭터의 좌표 (0) | 2023.01.27 |
| [프로그래머스] Lv0 종이자르기 (0) | 2023.01.20 |
| [프로그래머스] Lv0 컨트롤 제트 (1) | 2023.01.19 |
댓글