
코드스테이츠 과제 코드를 공부 목적으로 변형 해서 정리 하였습니다.
✅문제
정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다.
⛔주의
- 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다.
- 배열의 요소는 음수와 0을 포함하는 정수입니다.
- 배열의 길이는 3 이상입니다.
💬입출력 예시
let output = largestProductOfThree([2, 1, 3, 7]);
console.log(output); // --> 42 (= 2 * 3 * 7)
output = largestProductOfThree([-1, 2, -5, 7]);
console.log(output); // --> 35 (= -1 * -5 * 7)
🍀문제코드
const largestProductOfThree = function (arr) {
// TODO: 여기에 코드를 작성합니다.
};
🍀해결코드
const largestProductOfThree = function (arr) {
// TODO: 여기에 코드를 작성합니다.
// 큰 수를 순서대로 적는다
// 큰 순서대로 3개의 수를 곱한다
// 큰수 하나와 가장 작은 수 두개를 곱한다
// 음수가 섞일 가능성이 있기 때문이다.
let newArr = [...arr]
newArr.sort((a,b)=> a-b ).reverse()
let len = newArr.length
let result = [(newArr[0]*newArr[1]*newArr[2]),(newArr[len-1]*newArr[len-2]*newArr[0])]
return Math.max(...result)
}
✍새로 알게 된 내용
sort 값을 정렬하는 함수로 알고 있다. 실제로 맞기도 하고
let arr = [100,3,99,61,2] 다음과 같은 배열이 있는 경우
arr.sort() 이렇게 하면 [2,3,61,99,100] 이렇게 출력이 될줄 알았는데 아니었다
실행하면 [100, 2, 3, 61, 99]이 출력이 된다.
사전 식으로 정렬이 일어난다.
다음과 같은 결과가 아닌 이쁘장한 정렬을 얻기 위해서는 sort안에 함수를 넣어 줘야 한다.
sort((a,b)=>{a-b})
sort에 a와 b자리에 값이 들어 올 경우 두개의 차이가 양수일 경우 자리 변경이 일어나고, 음수일 경우 자리가 변경되지 않는다.
arr.sort((a,b)=>a-b)으로 실행하면 [2, 3, 61, 99, 100]을 얻을수 있다.
🐾참조
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
'프론트엔드 > 코딩노트' 카테고리의 다른 글
| [백준] 2693/N번째 큰 수/JavaScript (0) | 2022.11.02 |
|---|---|
| [코플릿 - 재귀]num개의 요소만 포함된 배열 (0) | 2022.10.20 |
| [코플릿] 다차원 배열 평평하게 (0) | 2022.10.20 |
| [코드스테이츠 과제] fetch API (0) | 2022.09.27 |
| [코드스테이츠 과제] Node.js모듈 - fs모듈 (0) | 2022.09.27 |