반응형

생각하기
1. numbers 안의 최대값을 구한다.
2. 구한 최대값을 제외한 배열에서 다시 최대값을 구한다.
3. 두수를 곱한 값을 리턴해준다.
function solution(numbers) {
const max1 = Math.max(...numbers);
const max2 = numbers.pop(max1);
return max1;
}
바로 오류가 떴다
왜??
.pop()
pop() 메서드는 Array 인스턴스의 메서드로, 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다. 이 메서드는 배열의 길이를 변경합니다.
그렇다.. pop 메서드는 내가 원한대로 .pop(max1); 가 실행되지 않는다.
그러면 max1을 제거한 배열을 어케 구할까?
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
Array.prototype.splice() - JavaScript | MDN
splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
developer.mozilla.org
.splice() 메서드 이용하기
function solution(numbers) {
const max1 = Math.max(...numbers);
const index = numbers.indexOf(max1);
numbers.splice(index,1); //그 위치에서 1개 제거하기
const max2 = Math.max(...numbers);
return max1*max2;
}
정답 이긴 하다.
그런데 다른사람 정답을 보던중 더욱 간단한 방법을 찾았다!
function solution(numbers) {
numbers.sort((a, b) => b - a); // 내림차순 정렬
return numbers[0] * numbers[1];
}
우선 배열 자체를 내림차순으로 정렬 한후, 0번인덱스(최대값1)와 1번인덱스(최대값2) 를 곱해주면 같은 결과가 나오게 된다..!!
반응형
LIST
'알고리즘 문제' 카테고리의 다른 글
| [프로그래머스] - 피자 나눠먹기(1) (1) | 2025.08.08 |
|---|---|
| 프로그래머스 - 특정한 문자를 대문자로 바꾸기 - JS (0) | 2025.03.12 |
| 프로그래머스 - 문자열 바꿔서 찾기 - 자바스크립트 (1) | 2025.03.07 |
| 프로그래머스-문자열 다루기 기본-JS (1) | 2025.02.11 |
| [프로그래머스]내적.JS (1) | 2025.01.23 |