최댓값 만들기 (2)
문제 #
정수 배열 numbers
가 매개변수로 주어집니다. numbers
의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
numbers
의 원소는 음수일 수 있다.
- 제한사항
- -10,000 ≤
numbers
의 원소 ≤ 10,000 - 2 ≤
numbers
의 길이 ≤ 100
- -10,000 ≤
- 입출력 예
numbers result [1, 2, -3, 4, -5] 15 [0, -31, 24, 10, 1, 9] 240 [10, 20, 30, 5, 5, 20, 5] 600
나의 풀이 #
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int desc = 0;
int asc = 0;
Arrays.sort(numbers);
desc = numbers[0]*numbers[1];
asc = numbers[numbers.length-1]*numbers[numbers.length-2];
answer = desc >= asc? desc : asc;
return answer;
}
}
- 주어진
numbers
배열을 오름차순으로 정렬 - 첫 번째 원소와 두 번째 원소를 곱한 값을
desc
변수에 저장 - 마지막 원소와 마지막에서 두 번째 원소를 곱한 값을
asc
변수에 저장 - 그리고
desc
와asc
중에서 더 큰 값을answer
변수에 저장하여 반환한다.
다른 사람의 풀이 #
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]);
}
}
- 다른 사람의 풀이는
length
변수를 이용하여 배열의 길이를 저장하고,Math.max
함수를 이용하여 두 값을 비교하는 방식으로 구현되어 있다. Math.max(a, b)
함수는 a와 b 중에서 더 큰 값을 반환한다.- 즉,
numbers[0] * numbers[1]
과numbers[len - 2] * numbers[len - 1]
두 값을Math.max
함수에 넣어 더 큰 값을 반환하게 된다. - 따라서, 더 간결하고 코드의 길이가 짧은 풀이이다.
관련개념 학습 #
- 관련 개념을 찾아서 공부한 내용을 적는다.
ctrl + p
로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.- 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.