Frontend Developer

프로그래머스 - 최댓값 만들기(1)

문제

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

정답

function solution(numbers) {
    numbers.sort((a,b) => b - a)
    return numbers[0] * numbers[1];
}
  1. numbers.sort((a,b) => b - a): 배열을 내림차순으로 정렬합니다. 이는 배열의 첫 번째 원소에 가장 큰 값이 오도록 만듭니다.
  2. return numbers[0] * numbers[1];: 정렬된 배열에서 첫 번째와 두 번째 원소를 곱한 값을 반환합니다. 정렬된 상태이므로, 첫 번째 원소가 가장 큰 값이고 두 번째 원소가 그 다음으로 큰 값이기 때문에 최댓값이 됩니다.

sort

numbers.sort((a, b) => b - a); 부분은 sort 메서드를 사용하여 배열의 원소를 정렬하는 부분입니다. 특히 여기서는 numbers 배열을 내림차순으로 정렬하고 있습니다.

sort 메서드는 정렬 순서를 정의하는 비교 함수를 인자로 받습니다. 이 비교 함수는 두 개의 요소 a와 b를 비교하고, 그 결과에 따라 정렬 순서를 결정합니다. 만약 결과가 음수면 a는 b보다 앞에 위치하게 되고, 양수면 b는 a보다 앞에 위치하게 됩니다. 결과가 0이면 정렬 순서가 변경되지 않습니다.

여기서 사용된 (a, b) => b - a 함수는 b에서 a를 빼서 결과를 얻습니다. 만약 b가 a보다 크면 결과는 양수가 되어 b가 a보다 앞에 위치하게 되므로 내림차순 정렬이 이루어집니다.