상세 컨텐츠

본문 제목

JavaScript Algorithm - largestProductOfThree

Programming Language/JavaScript

by Yongari 2023. 1. 11. 22:55

본문

 

 

문제

정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다. 배열은 랜덤하게 입력되고 그 안에 숫자는 음수, 양수, 0이 랜덤하게 입력됩니다. 

입출력 예시를 보고 코드를 작성하세요~ 


입력

인자 1 : arr

  • number 타입을 요소로 갖는 임의의 배열

출력

  • number 타입을 리턴해야 합니다.

주의사항

  • 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다.
  • 배열의 요소는 음수와 0을 포함하는 정수입니다.
  • 배열의 길이는 3 이상입니다.

입출력 예시

let output = largestProductOfThree([2, 1, 3, 7]);
console.log(output); // --> 42 (= 2 * 3 * 7)

output = largestProductOfThree([-1, 2, -5, 7]);
console.log(output); // --> 35 (= -1 * -5 * 7)

 

풀이코드 설명

const largestProductOfThree = function (arr) {
  //배열을 오름차순으로 정렬하면서 깊은 복사 (.slice)를 이용해서 sortedArr 배열 생성 
  let sortedArr = arr.slice().sort((a, b) => a - b);
  
  //입력된 배열 중 오름차순을 하면 끝에서 3개가 가장 큰 수가 된다.
  let plus =
    sortedArr[arr.length - 1] *
    sortedArr[arr.length - 2] *
    sortedArr[arr.length - 3];
  
  //입력된 배열 중 음수가 있거나 0이 있을 경우 가장 작은 수 2개와 마지막 수를 곱하면 3개 요소 중 최대값이 생긴다.
  let minus = sortedArr[arr.length - 1] * sortedArr[0] * sortedArr[1];
  
  //위의 2가지 경우의 수 중 가장 큰 최대값을 리턴하기
  return Math.max(plus, minus);
};

'Programming Language > JavaScript' 카테고리의 다른 글

JavaScript Algorithm - binarySearch  (0) 2023.01.13
JavaScript Algorithm - power, 거듭제곱  (0) 2023.01.12
JavaScript Algorithm - dfs  (0) 2023.01.09
JavaScript Algorithm - sudoku  (2) 2023.01.06
JavaScript Algorithm - tiling  (0) 2023.01.05

관련글 더보기