프로그래머스 : 최댓값 만들기

Digeut·2023년 3월 4일
0

프로그래머스

목록 보기
12/164

❔문제설명

정수 배열 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보다 큰 값이 되므로 양 극단의 배열의 곱 중 더 큰값을 나타내는
경우도 생각을 해야한다! 너무 단순하게 생각했다!!!

profile
개발자가 될 거야!

0개의 댓글