주니어 기초 코딩공부/JAVA_programmers_코딩테스트

최댓값 만들기 (2)_programmers_lev00

jju_developer 2022. 12. 7. 15:17
728x90

<코딩 테스트>

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

 

<나의 풀이 과정>

우선, 가장 큰 수가 나오는 경우의 수를 생각 해봤을때 Array.sort()로 정렬을 한 후

마이너스들은 마이너스 끼리 곱해서 큰수가 나온 값을 따로 저장 하고

플러스중에서 가장 큰수 두개를 곱해서 따로 저장한 뒤 둘중 더 큰 값의 배열을 return 하도록 코딩하였습니다.

 

 

<나의 풀이 코드>

import java.util.Arrays;
class Solution {
    public int solution(int[] numbers) {
		int answer = 0;

		Arrays.sort(numbers);

		int num1 = numbers[0] * numbers[1];
		int num2 = numbers[numbers.length - 1] * numbers[numbers.length - 2];

		if (num1 < num2) {
			answer = numbers[numbers.length - 1] * numbers[numbers.length - 2];
		} else {
			answer = numbers[0] * numbers[1];
		}
		return answer;
	}
}

 

<다른사람 풀이 1>

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        Arrays.sort(numbers);
        return numbers[numbers.length-1] * numbers[numbers.length-2] < numbers[0] * numbers[1] ?
            numbers[0] * numbers[1] : numbers[numbers.length-1] * numbers[numbers.length-2];
    }
}

<다른사람 풀이 2>

import java.util.*;

class Solution {
    public int solution(int[] numbers) {
        int len = numbers.length;
        Arrays.sort(numbers);
        return Math.max(numbers[0] * numbers[1], numbers[len - 2] * numbers[len - 1]);
    }
}
728x90