문제 :
내 풀이 :
function solution(numbers) {
let max = Math.max(...numbers);
let index = numbers.indexOf(max);
numbers.splice(index, 1);
return max * Math.max(...numbers);
}
Math.max를 사용하여 numbers에서 최댓값을 뽑아 max변수에 저장하고,
indexOf를 사용하여 max의 index값을 뽑아낸 후, numbers에서 max를 지웠다.
만약 numbers가 [1,2,3,4,5] 라고 가정하면 위 과정을 통해 최댓값인 5는 지워지고 [1,2,3,4]만 남았을 것이다.
그럼 미리 뽑아놓은 max인 5와 max가 뽑힌 후 최대값인 4를 곱하면 numbers의 원소 중 두 개를 곱해 만들 수 있는 최대값이다.
다른 사람의 풀이 :
function solution(numbers) {
numbers.sort((a,b)=>b-a);
return numbers[0]*numbers[1];
}
numbers를 내림차순 정렬하고(배열의 첫 번째 요소가 가장 크고, 두 번째 요소가 그 다음으로 큰 값이 됨) 첫 번째 요소와 두 번째 요소를 곱하여 반환하는 코드이다.
내림차순으로 정렬은 생각도 하지 못했는데 위 코드가 훨씬 간결하게 짜여졌다.
'프로그래머스' 카테고리의 다른 글
[JavaScript] 문자 반복 출력하기 - 프로그래머스 (0) | 2024.07.30 |
---|---|
[JavaScript] 문자열 뒤집기 - 프로그래머스 (0) | 2024.07.29 |
[JavaScript] 점의 위치 구하기 - 프로그래머스 (0) | 2024.07.26 |
[JavaScript] 중복된 문자 제거 - 프로그래머스 (0) | 2024.07.24 |
[JavaScript] 양꼬치 - 프로그래머스 (0) | 2024.07.24 |