배열에서 두 수를 곱하여 최대값 만들기

HYUK·2023년 6월 16일
0

알고리즘

목록 보기
1/2

1. 문제

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

2. 풀이과정

먼저 접근한 방식은 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];
}

참고사항 : sort 메서드 MDN

profile
step by step

0개의 댓글