https://school.programmers.co.kr/learn/courses/30/lessons/120862
function solution(numbers) {
let answer = -1e9;
numbers.forEach((n, i)=>{
numbers.forEach((m, j)=>{
if (i !== j && n * m > answer){
answer = n * m;
}
})
})
return answer;
}
클래식하게 풀었다. 처음에는 for...of
로 이중 루프를 돌렸다. 값이 다른 것만 계산했더니 같은 숫자가 두 개 이상 나오는 경우를 생각지 못했다.
같은 숫자가 나오더라도 계산되도록 인덱스가 다른 경우를 조건에 추가했다.
다른 사람 풀이를 보니 매우 심플했다. 오름차순으로 정렬 후 가장 작은 수 두 개와 가장 큰 수 두 개의 곱을 비교해 큰 값을 리턴하면 되었다.
function solution(numbers) {
const length = numbers.length;
numbers.sort((a,b)=>a-b);
return Math.max(numbers[0]*numbers[1], numbers[length-1]*numbers[length-2]);
}
https://school.programmers.co.kr/learn/courses/30/lessons/120860
function solution(dots) {
const [dot1, dot2, dot3, dot4] = dots;
const xArr = [dot1[0], dot2[0], dot3[0], dot4[0]].sort((a,b)=>a-b);
const yArr = [dot1[1], dot2[1], dot3[1], dot4[1]].sort((a,b)=>a-b);
const answer = (xArr[3] - xArr[0]) * (yArr[3] - yArr[0]);
return answer;
}
x축, y축 최댓값과 최솟값 간의 거리를 구한 후 곱해서 넓이를 구했다. Math
메서드를 써도 큰 차이가 없는 거 같아서 쓰지 않았다.