정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
이중 for문으로 일일이 곱해 제일 큰 값을 찾는 건 비효율적이라는 생각이 들었다. 그래서 방법을 찾던 도중 결국 '최댓값'을 구하기 위해서는 numbers의 두 원소의 부호가 같아야 하고, 그렇다면 정렬한 다음 각각 앞뒤에서 1, 2번끼리 곱해서 둘 중 큰 거 반환하면 되지 않나하는 생각이 들었다.
편의상 양수끼리 곱한 건 positive, 음수끼리 곱한 건 negative라고 정했고, 변수에 따로 대입하지 않고 삼항 연산자를 사용해 바로 반환했다.
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
Arrays.sort(numbers);
int positive = numbers[numbers.length - 1] * numbers[numbers.length - 2];
int negative = numbers[0] * numbers[1];
return positive > negative ? positive : negative;
}
}
