저장을 습관화
프로그래머스 LV.0 직사각형 넓이 구하기 본문
프로그래머스 LV.0 직사각형 넓이 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120860
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
직사각형 넓이 구하기
2. 문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
3. 제한 사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
4. 예시
dots | result |
[[1, 1], [2, 1], [2, 2], [1, 2]] | 1 |
[[-1, -1], [1, 1], [1, -1], [-1, 1]] | 4 |
5. 기본 제공 코드
function solution(dots) {
var answer = 0;
return answer;
}
6. 제출한 내 답
const solution = (dots) => {
let horizontalPoint = dots.map((v) => v[0]);
let verticalPoint = dots.map((v) => v[1]);
let widthStart = Math.min(...horizontalPoint);
let widthEnd = Math.max(...horizontalPoint);
let lengthStart = Math.min(...verticalPoint);
let lengthEnd = Math.max(...verticalPoint);
let width =
widthStart < 0 ? Math.abs(widthStart - widthEnd) : widthEnd - widthStart;
let length =
lengthStart < 0
? Math.abs(lengthStart - lengthEnd)
: lengthEnd - lengthStart;
return width * length;
};
정확성 테스트
테스트 1 〉 통과 (0.06ms, 33.6MB)
테스트 2 〉 통과 (0.06ms, 33.5MB)
테스트 3 〉 통과 (0.06ms, 33.6MB)
테스트 4 〉 통과 (0.06ms, 33.5MB)
테스트 5 〉 통과 (0.06ms, 33.6MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
6-2. VSC에 작성한 내용
const solution = (dots) => {
let horizontalPoint = dots.map((v) => v[0]);
let verticalPoint = dots.map((v) => v[1]);
let widthStart = Math.min(...horizontalPoint);
let widthEnd = Math.max(...horizontalPoint);
let lengthStart = Math.min(...verticalPoint);
let lengthEnd = Math.max(...verticalPoint);
let width =
widthStart < 0 ? Math.abs(widthStart - widthEnd) : widthEnd - widthStart;
let length =
lengthStart < 0
? Math.abs(lengthStart - lengthEnd)
: lengthEnd - lengthStart;
return width * length;
};
// 테스트
console.log(
solution([
[1, 1],
[2, 1],
[2, 2],
[1, 2],
])
);
console.log(
solution([
[-1, -1],
[1, 1],
[1, -1],
[-1, 1],
])
);
7. 특이사항
에바인가
8. 다른 사람이 작성한 답
8-1. 가장 많이 쓰인 풀이법, 좋아요를 가장 많이 받은 풀이법
function solution(dots) {
let x = [],
y = [];
for (let pos of dots) {
x.push(pos[0]);
y.push(pos[1]);
}
return (Math.max(...x) - Math.min(...x)) * (Math.max(...y) - Math.min(...y))
}
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.0 전국 대회 선발 고사 (0) | 2023.10.03 |
---|---|
프로그래머스 LV.0 코드 처리하기 (0) | 2023.10.03 |
프로그래머스 LV.0 그림 확대 (0) | 2023.10.03 |
프로그래머스 LV.0 외계어 사전 (0) | 2023.10.03 |
프로그래머스 LV.2 JadenCase 문자열 만들기 (0) | 2023.10.02 |