언젠가는 펼쳐 볼 아카이브
[BOJ] 9063번 - 대지 본문
사용언어 : javascript - node.js
#문제
#접근방법
최소 크기의 직사각형 넓이를 구해야한다.
처음엔 입력값의 좌표들이 담긴 사각형의 좌표를 하나하나 구해야 하나 했었는데, 생각해보니 그냥 그 좌표들을 가지고 사각형을 그려서 가로/세로 넓이를 구하면 될 것 같다.
그렇다면 점의 개수가 1개 일때는 넓이를 구할 수 없으므로 결과 값을 0으로 해주고, 점의 개수가 1개 이상일 때의 가로/세로 길이를 구해보자..!
* 가로 길이 : x 좌표에서 제일 큰 값 - x 좌표에서 제일 작은 값
* 세로 길이 : y 좌표에서 제일 큰 값 - y 좌표에서 제일 작은 값
위와 같으므로 입력한 x좌표들과 y 좌표들을 내림차순으로 sort 한 후 길이를 계산해주자.
내림차순으로 정렬한 후 뺄셈을 했지만 혹시 모르는 차원에서 Math.abs()까지 해줬다
#제출코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\n');
const num = +input.shift();
let arr = [];
input.forEach((dots) => {
arr.push(dots.split(' ').map((item) => +item));
});
solution(num, arr);
function solution(num, arr) {
if (num === 1) {
console.log(0);
return;
}
let answer = 0;
let xPoints = [];
let yPoints = [];
for (let i = 0; i < num; i++) {
xPoints[i] = arr[i][0];
yPoints[i] = arr[i][1];
}
xPoints.sort((a, b) => b - a);
yPoints.sort((a, b) => b - a);
answer =
Math.abs(xPoints[0] - xPoints[num - 1]) *
Math.abs(yPoints[0] - yPoints[num - 1]);
console.log(answer);
}
'IT > Baekjoon Oline Judge' 카테고리의 다른 글
[BOJ] 5073번 - 삼각형과 세 변 (0) | 2023.09.11 |
---|---|
[BOJ] 10101번 - 삼각형 외우기 (0) | 2023.09.11 |
[BOJ] 15894번 - 수학은 체육과목 입니다 (0) | 2023.09.06 |
[BOJ] 3009번 - 네 번째 점 (0) | 2023.09.06 |
[BOJ] 27323번 - 직사각형 (0) | 2023.09.06 |