정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
-10,000 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers 의 길이 ≤ 100
Arrays 이용해서 배열한 다음 가장 오른쪽의 두 수를 곱하면 되지 않나?
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int answer = 0 ;
Arrays.sort(numbers);
answer = numbers[numbers.length-1] * numbers[numbers.length-2];
return answer;
}
}
테스트 2,3은 잘 되는데 테스트1이 안된다.. 왜 기대값이 15인거지?
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int answer = 0 ;
Arrays.sort(numbers);
int max1 = numbers[numbers.length-1] * numbers[numbers.length-2];
int max2 = numbers[0] * numbers[1];
if (max1 > max2) {
answer = max1;
} else {
answer = max2;
}
return answer;
}
}
테스트1에서 정렬했을때 [-5, -3, 1, 2, 4]가 되는데
이때 음수와 음수의 값은 양수가 된다! 그래서 -5 x -3의 값이
2 x 4보다 큰 값이 되므로 양 극단의 배열의 곱 중 더 큰값을 나타내는
경우도 생각을 해야한다! 너무 단순하게 생각했다!!!