프로그래머스 문제풀이/Level 0

최댓값 만들기(2) (자바, Java)

뮤츠 2022. 11. 27. 18:56

음수가 있냐, 없냐에 따라 갈린다.

최댓값 만들기 (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;
    }
}