정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
0 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers의 길이 ≤ 100
numbers -> result
[1, 2, 3, 4, 5] -> 20
[0, 31, 24, 10, 1, 9] -> 744
배열에서 가장 큰 수와 작은 수를 곱하면 된다고 생각을 했다.
그래서 가장 큰 수를 뽑고 그 수를 제외한 배열에서 가장 큰 수를 구해서 곱하면 된다고...
import java.util.Arrays;
class Solution {
public static int[] removeElement(int[] arr, int item) {
return Arrays.stream(arr)
.filter(i -> i != item)
.toArray();
}
public int solution(int[] numbers) {
int max = 0;
for (int num : numbers) {
max = num > max ? num : max;
}
int[] numbersWithoutMax = removeElement(numbers, max);
int secondMax = 0;
for (int num : numbersWithoutMax) {
secondMax = num > secondMax ? num : secondMax;
}
return max * secondMax;
}
}
...ㅠㅠ 어렵게 어렵게 생각하고 작성한 거였는데...
그래서 찾아보니까.. 그냥 배열 정렬시켜서 큰 수 두개 뽑으면 되는거였음..
근데 내 답은 왜 안될까.. 왜 100이 아닐까 궁금하다
흐흐흫 알아냈다.. tild에 적어야짛
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
// 배열 오름차순으로 정렬
Arrays.sort(numbers);
// 정렬한 배열의 마지막 전 숫자와 마지막 숫자 곱을 구한다.
return numbers[numbers.length-2]*numbers[numbers.length-1];
}
}
오름차순 정렬.. sort()
!!!!