largestProductOfThree

KoEunseo·2022년 8월 26일
0

Daily_Coding

목록 보기
4/21

입력: 여러 값을 가진 배열(정수)을 받는다. 이때 배열의 길이는 3 이상이다.
출력: 세개의 값을 곱해서 가장 큰 수가 나오도록 한다

내가 접근한 방법

경우의 수를 이래저래 생각해보다가, 일단 배열에서 가장 큰 수가 필요하겠구나 하는 생각이 들었다. 예시에 [2,1,3,7]이 배열로 나와있는데, 7은 무족권 필요하다!! 그래서 배열에서 가장 큰 수는 일단 max라는 변수로 뺌

이제 두 수를 더 골라야한다... 배열에 마이너스값도 있을 수 있기 때문에 혼란이 옴... 으악!! 여기서 어떻게 요소를 뽑아내지 하다가 그럴 필요 없이 두 수의 곱이 가장 큰것만 알면 되겠구나 하는 생각이 들었다!

일단 result에 가장 작은 수를 할당했다. 그리고 반복문을 이중으로 써서 arr[i]와 arr[j]의 곱이 result보다 크면 그 값을 result에 재할당한다. 가장 큰 수를 찾아 반복문을 빠져나오면 max와 result(곱해서 제일 큰 수)를 곱해서 리턴하면 끗!!!

(+)아 arr가 딱 3이면 3개 곱한다고 따로 조건을 주었당

const largestProductOfThree = function (arr) {
  if(arr.length === 3) { return arr[0] * arr[1] * arr[2] } //배열 3개일때
  
  let max = Math.max(...arr); //제일큰수!
  arr.splice(arr.indexOf(Math.max(...arr)), 1); //제일큰수를 제외한 배열!
  let result = Math.min(...arr);
  //곱해서 제일 큰 수 구하기
  for(let i = 0; i < arr.length; i++){
    for(let j = i + 1; j < arr.length - 1; j++) {
      if(arr[i] * arr[j] > result){
          result = arr[i] * arr[j];
      }
    }
  }
  return max * result;
};
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글