
음수가 있냐, 없냐에 따라 갈린다.
최댓값 만들기 (1) 에서는 양수만 있었기 때문에, 정렬 후 끝값 2개 (=가장 큰값 2개) 를 곱해주면 땡이지만,
음수가 있으면, 음수간 곱은 양수가 되고, 절댓값이 더 크다면 끝값보다 이쪽이 크기 때문.
하지만 음수*양수 로는 최댓값이 될 수 없기 때문에,
음수간 곱에서의 최대값 = 절대값이 가장 큰 두개의 값 = 정렬했을때 맨 앞의 두개의 값이다.
따라서, 정렬 후 맨 앞의 두 값의 곱과, 맨 뒤의 두 값의 곱을 구한 뒤, 양쪽을 비교해 큰값을 return하면 된다.
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
Arrays.sort(numbers);
int max1 = numbers[0]*numbers[1];
int max2 = numbers[numbers.length-1] * numbers[numbers.length-2];
if (max2>max1) {
answer = max2;
} else {
answer = max1;
}
return answer;
}
}'프로그래머스 문제풀이 > Level 0' 카테고리의 다른 글
| 합성수 찾기 (자바, Java) (0) | 2022.11.27 |
|---|---|
| 중복된 문자 제거 (자바, Java) (0) | 2022.11.27 |
| 가장 큰 수 찾기 (자바, Java) (0) | 2022.11.27 |
| 약수 구하기 (자바, Java) (1) | 2022.11.26 |
| 최빈값 구하기 (자바, Java) (0) | 2022.11.26 |