상세 컨텐츠

본문 제목

Get the Largest Product of Three Numbers - Javascript

Programming/Algorithm

by 쌩우 2019. 6. 14. 19:59

본문

해당 toy 문제는,
주어진 숫자의 배열 안에서 세 개의 숫자를 뽑을 때,
세 숫자를 곱한 값이 최대가 되는 경우를 찾아서 반환하는 것이었다.

test case로는 다양한 조건이 있었다.

  1. 양수로만 구성된 배열
    : [2, 11, 13, 7, 13, 3, 11, 5],
  2. 양수와 음수가 섞인 배열
    : [2, 3, -11, 7, 5, -13], [-31, 41, 34, -37, -17, 29]
  3. 음수로만 구성된 배열
    : [-5,-4,-3,-2,-1]
let head = 0;
let tail = 0;

array.sort((a, b) => a - b);    //이 부분에서, 주어졌던 배열이 크기순으로 정렬된다. 작은 것부터 큰 숫자의 오름차순으로 정렬된다.

head = array[0] * array[1] * array[array.length - 1]; // mixed, 양수 음수가 섞인 경우 array[array.length-1]이 무조건 양수일 것으로 가정.
tail = array[array.length - 1] * array[array.length - 2] * array[array.length - 3]; // all neg or pos. 이 경우 정렬된 배열의 마지막 부분부터 차례대로 세 개를 뽑아온다.

if(head > tail) {
    return head;
} else {
    return tail;
}
//그 후 head와 tail을 비교하여 큰 것을 return 하면 주어진 배열이 어떠한 종류건 분류가 되어 최대의 값을 항상 얻을 수 있다.

관련글 더보기

댓글 영역