Contents
정답문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열
dots
가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.제한사항
dots
의 길이 = 4
dots
의 원소의 길이 = 2
- 256 <
dots[i]
의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
입출력 예
dots | result |
[[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;
return answer;
}
}
정답
import java.util.Arrays;
class Solution {
public int solution(int[][] dots) {
// 원소는 -256 ~ 256 사이, dots의 길이는 무조건 4
// 모든 값을 양수로 변경하기 위해 256을 더한다
for (int i = 0; i < dots.length; i++) {
for (int j = 0; j < dots[i].length; j++) {
dots[i][j] += 256;
}
}
// 이중 배열을 왼쪽 값 기준으로 오름차순 정렬 x축을 기준으로 같은 숫자끼리 정렬
// ex :{ 1, 1 }, { 2, 1 }, { 2, 2 }, { 1, 2 }
// ||
// ||
// { 1, 1 }, { 1, 2 }, { 2, 1 }, { 2, 2 }
Arrays.sort(dots, (a, b) -> Integer.compare(a[0], b[0]));
int width = dots[0][0] - dots[2][0]; // 가로길이
int height = dots[0][1] - dots[1][1]; // 세로길이
if (width < 0) {
width *= -1;
}
if (height < 0) {
height *= -1;
}
return width * height;
}
}
Share article