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

Solution
function solution(numbers) {
const x = numbers.sort((a, b) => a - b);
const a = x[0] * x[1];
const b = x[numbers.length - 1] * x[numbers.length - 2]
return a > b ? a : b
}
이 문제에서 중요한 것은 음수 * 음수는 정렬에서 가장 작은 값이지만 곱하면 가장 큰 수일수도 있다는 것이다.
그렇기에 sort()로 오름차순으로 정렬해주면 음수가 맨 앞으로 오므로 음수의 첫번째와 두번째를 곱한 값과 양수의 가장 큰 값과 그 다음으로 큰 값을 곱한 값을 비교해준다.
function solution(numbers) {
numbers.sort((a, b) => a - b);
return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1]*numbers[numbers.length-2]);
}
다른 사람 코드에서 나랑 같은 방식으로 풀었지만 Math.max()를 이용하여 간략하게 푼 것을 발견하였다.
'프로그래머스 (JS) > Lv. 0' 카테고리의 다른 글
[Programmers] 120899번 - 가장 큰 수 찾기 (0) | 2023.03.02 |
---|---|
[Programmers] 120895번 - 인덱스 바꾸기 (0) | 2023.03.02 |
[Programmers] 120845번 - 주사위 개수 (0) | 2023.03.02 |
[Programmers] 120823번 - 직각삼각형 출력하기 (0) | 2023.03.02 |
[Programmers] 120905번 - n의 배수 고르기 (0) | 2023.03.02 |