최댓값 만들기 (2) Lv. 0

박영준·2023년 5월 17일
0

코딩테스트

목록 보기
94/300

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        return answer;
    }
}

제한 사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers 의 길이 ≤ 100

입출력 예

입출력 예 설명

  • 입출력 예 #1

    • 두 수의 곱중 최댓값은 -3 * -5 = 15 입니다.
  • 입출력 예 #2

    • 두 수의 곱중 최댓값은 10 * 24 = 240 입니다.
  • 입출력 예 #3

    • 두 수의 곱중 최댓값은 20 * 30 = 600 입니다.

해결법

방법 1

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        
        Arrays.sort(numbers);       // 오름차순 정렬
        
        int negative = numbers[0] * numbers[1];     // 음수의 곱
        int positive = numbers[numbers.length - 1] * numbers[numbers.length - 2];       // 양수의 곱

        return negative > positive ? negative : positive;
    }
}
  • negative : 오름차순 정렬 후, 가장 왼쪽 & 그 다음 수를 곱해야 가장 큰 값이 나온다

  • positive :오름차순 정렬 후, 가장 오른쪽 & 그 전의 수를 곱해야 가장 큰 값이 나온다

방법 2

import java.util.*;

class Solution {
    public int solution(int[] numbers) {
        
        Arrays.sort(numbers);
        
        return Math.max(numbers[0] * numbers[1], numbers[numbers.length - 2] * numbers[numbers.length - 1]);
    }
}
  • Arrays.sort(numbers) : 오름차순 정렬

  • Math.max(인자, 인자) : 두 인자중 큰 값을 반환


최댓값 만들기 (2)

profile
개발자로 거듭나기!

0개의 댓글