function solution(numbers) {
if (numbers.length === 2) {
return numbers[0]*numbers[1]
}
const minus = numbers.sort((a,b)=>a-b).filter(n => n < 0);
const plus = numbers.sort((a,b)=>b-a).filter(n => n > 0);
const compare = [minus, plus];
let answer = [];
compare.forEach(arr => {
if(arr.length >= 2) answer.push(arr[0]*arr[1]);
if(arr.length == 1) answer.push(arr[0]);
if(arr.length == 0) arr;
})
return Math.max(...answer);
이렇게 짰는데 코드줄도 길어지고 테스트 케이스 2번에서 오류가 났다. 그래서 다른 풀이를 찾아봤다.
function solution(numbers) {
numbers.sort((a, b) => a - b);
return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1]*numbers[numbers.length-2]);
}
function solution(numbers) {
numbers.sort((a, b) => b - a);
const firstTwo = numbers[0] * numbers[1]
const lastTwo = numbers[numbers.length -1] * numbers[numbers.length - 2];
return firstTwo > lastTwo ? firstTwo : lastTwo;
}
function solution(numbers) {
var answer = [];
for(let i = 0; i < numbers.length - 1; i++){
for(let j = i + 1; j < numbers.length; j++){
answer.push(numbers[i] * numbers[j]);
}
}
return Math.max(...answer);
}
두번째 방법은 배열을 순회하면서 모든 곱을 구한 뒤에 그 곱들의 최댓값을 구한 방법이다.