
https://school.programmers.co.kr/learn/courses/30/lessons/120862
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
-10,000 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers 의 길이 ≤ 100
입출력 예
| numbers | result |
|---|---|
| [1, 2, -3, 4, -5] | 15 |
| [0, -31, 24, 10, 1, 9] | 240 |
| [10, 20, 30, 5, 5, 20, 5] | 600 |
입출력 예 #1
두 수의 곱중 최댓값은 -3 -5 = 15 입니다.
입출력 예 #2
두 수의 곱중 최댓값은 10 24 = 240 입니다.
입출력 예 #3
두 수의 곱중 최댓값은 20 * 30 = 600 입니다.
function solution(numbers) {
// 내림차순으로 만들어준다.
numbers.sort((a, b) => (b - a));
// 정수중에 가장 큰 수
let integer = numbers[0] * numbers[1];
// 음수 중에 가장 큰 수
let negative = numbers[numbers.length -1] * numbers[numbers.length -2];
// 양수와 음수의 곱을 비교해서 큰 수를 반환
return integer > negative ? integer : negative ;
}
🪐 다른사람의 풀이 1
function solution(numbers) {
numbers.sort((a, b) => a - b);
return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1]*numbers[numbers.length-2]);
}
🪐 다른사람의 풀이 2
function solution(numbers) {
var answer = [];
// i가 numbers 배열의 길이보다 1 작은 동안에 (numbers 배열의 끝에서 두 번째 요소까지)반복
for(let i = 0; i < numbers.length - 1; i++){
// 변수 j를 i+1로 초기화하고, j가 numbers 배열의 끝까지 도달할 때까지 반복
for(let j = i + 1; j < numbers.length; j++){
answer.push(numbers[i] * numbers[j]);
}
}
//배열의 최대값을 반환
return Math.max(...answer);
}