반응형
코딩테스트 최댓값 만들기 ( 2 )
문제 설명
출력 예시
양수와 음수가 섞인 배열이 있습니다.
이 배열에서 양수끼리의 곱과 음수끼리의 곱중에 최댓값이 높은 값을 출력하는 문제입니다!
예를 들어
[1,2,-3,4,-5] 배열이 있다면 양수의 곱 최댓값은 2*4 = 8 이지만
음수의 곱 최댓값은 -3 * -5 = 15 입니다.
양수와 음수를 잘 골라서 곱하는게 이 문제의 핵심인거 같습니다!
그럼 바로 풀이 가보겠습니다.
const numbers = [0, -31, 24, 10, 1, 9];
var answer;
let len = numbers.length;
numbers.sort((a,b) => b-a);
numbers[0] * numbers[1] > numbers[len-1] * numbers[len-2] ? answer = numbers[0] * numbers[1] : answer = numbers[len-1] * numbers[len-2]
//24 * 10
//answer = 240
이렇게 하시면 답은 24*10을 하여 값은 240이 출력이 됩니다.
우선 배열을 정렬을 하여 제일 큰 정수는 0인덱스부터 가게 됩니다.
[24,10,9,1,0,-31]
그렇다면 자연스럽게 음수는 맨 뒤 인덱스에 위치하게 됩니다.
그렇다면 맨 앞에 배열 인덱스 2개와 맨뒤 인덱스2 개를 비교하면 자연스럽게
양수의 곱 최댓값과 음수의 곱 최댓값을 비교 할 수있습니다!
24 * 10 과 0 * -31 을 비교하게 되니 당연히 24 * 10이 더높겠죠?
그러므로 답은 240이 출력하게 됩니다.