정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
먼저 접근한 방식은 numbers 배열에서 가장 큰 수(first)를 뽑아낸뒤 그 뽑아낸 숫자로 numbers배열과 filter매소드로 비교하여 가장 큰 수를 재외한 새로운 배열을 뽑아낸뒤 새로운 배열에서 다시또 가장 큰 수(second)를 뽑아서 첫번째로 얻은 가장큰 수(first)와 두번째로 얻은 가장큰 수(second)를 더하는 방법으로 접근하였다.
function solution(numbers) {
let first = Math.max(...numbers);
let secondFilter = numbers.filter(secondNumber => secondNumber !== first);
let second = Math.max(...secondFilter);
return first * second;
}
위와같은 방법으로 하였으나 경우의수중 실패가 나오는 경우가 있어서 다른방법을 찾아보았고 새로운 방법으로
내림차순으로 배열을 정리한뒤 인덱스 0,1을 더하는 방법으로 접근할 수 있었다.
function solution(numbers) {
// sort 매서드를 이용한 배열을 내림차순으로 정렬합니다.
numbers.sort((a, b) => b - a);
// 가장 큰 두 수를 곱하여 최댓값을 구합니다.
return numbers[0] * numbers[1];
}