코딩테스트

코딩테스트 최댓값 만들기 ( 2 )

김도현2 2023. 6. 15. 23:50
반응형

코딩테스트 최댓값 만들기 ( 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이 출력하게 됩니다.