정수 배열 numbers
가 매개변수로 주어집니다. numbers
의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
numbers
의 원소 ≤ 10,000numbers
의 길이 ≤ 100numbers | result |
---|---|
[1, 2, 3, 4, 5] | 20 |
[0, 31, 24, 10, 1, 9] | 744 |
입출력 예 #1
입출력 예 #1
const solution = (numbers) => {
numbers.sort((a, b) => b - a);
return numbers[0] * numbers[1];
}
/* 내가 처음 작성한 코드이다. numbers를 sort를 사용하여 내림차순 해주고 number의 인덱스로 접근하여
0번째와 1번째 있는 요소를 곱해주었다. */
const solution = (numbers) => {
numbers.sort((a, b) => a - b);
return numbers.at(-1) * numbers.at(-2);
}
/* 이건 다른분의 코드를 보다가 at메서드를 처음 보게 되어 공부할 겸 작성해보았다.
SOLUTION1에서는 sort를 이용해서 내림차순으로 바꿔주고 numbers의 인덱스로 접근해주었는데
at메서드를 사용해서 sort로 오름차순을 해주고 numbers.at(-1)을 작성해주어
numbers[numbers.length -1]와 같은 코드이지만 더 간결하게 작성해주었다. at 메서드 관련해서
따로 내용을 정리해서 velog에 작성해두었다. */
function solution(numbers) {
return numbers.sort((a,b)=>b-a).slice(0,2).reduce((a,b)=>a*b);
}
/* 이것도 다른분의 코드이다. 제일 간단하게 작성할 수 있는거 같아서 작성해본다.
sort를 이용해서 내림차순을 해준 후 slice를 통해서 0번째 인덱스에서 2번째 인덱스 이전까지
복사 해준 후 reduce를 통해서 곱해주었다. */
const solution = (numbers) =>
numbers.sort((a, b) => b - a).slice(0, 2).reduce((a, b) => a * b);
/* 위의 코드에서 화살표 함수로 변경해주고 return과 중괄호를 생략해주어 더 간략하게 작성한 코드이다. */
function solution(numbers) {
numbers.sort((a, b) => a - b)
return Math.max(...numbers) * numbers[numbers.length - 2]
}
/* 다른 분의 코드인데 Math.max를 이용해서도 작성하는 방법을 남겨보고 싶어서 작성했다.
numbers를 스프레드 연산자를 이용해서 배열 안에 요소들을 다 분리 시켜 준 후 Math.max로 최대 큰 수를
추출하고 numbers[numbers.length -2]로 두번째로 큰 수를 추출 후 곱해주었다. */
const solution = (numbers) => {
numbers.sort((a, b) => a - b)
return Math.max(...numbers) * numbers.at(-2);
}
출처 : 프로그래머스 스쿨 | 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120847