[프로그래머스/Java] Lv.0 최댓값 만들기 (2)

febCho·2024년 5월 23일
0

코딩테스트

목록 보기
203/253
post-thumbnail

문제

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

- 제한사항

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

풀이

이중 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;
    }
}

결과

profile
Done is better than perfect.

0개의 댓글