프록그래머스 최댓값 만들기(2)를 푸는데 의문점이 들었던 부분을 기록했다.
나는 먼저 배열의 숫자를 큰 순서대로 나열 한 다음 맨 앞의 숫자와 그 다음 숫자를 곱하면 최댓값을 만들 수 있을 거라 생각했다.
그래서
numbers.sort((a,b)=>a-b)).reduce((a,b)=>(a*b),1)
작성했더니 배열안의 모든 숫자를 곱한 값이 나왔다.
numbers.sort((a,b)=>a-b)
var answer = numbers[numbers.length - 1] * numbers[numbers.length - 2];
이렇게 푸니까 음수 * 음수 일때의 값은 해당이 안되는 걸 알았다.
그래서 다른 사람의 풀이를 봤다.
numbers.sort((a, b) => a - b);
return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1]*numbers[numbers.length-2]);
오오~~ Math.max() ! 이거 사용한 사람 천재인 줄 알았다.
그래도 (numbers[0]*numbers[1]와 numbers[numbers.length-1]*numbers[numbers.length-2])의 차이를 잘 모르겠어서 인공지능에게 물어봤다.
numbers[0]*numbers[1]는 제일 작은 수를 곱했을때
numbers[numbers.length-1]*numbers[numbers.length-2]) 이건 제일 큰 수를 곱했을 때의 값이었다.
그래서 이걸 Math.max()가 작은 수를 곱한 값과 큰 수를 곱한 값을 비교해서 제일 큰 max값을 반환하는 거였다.
굿굿~
'자기개발 > TIL' 카테고리의 다른 글
자바로 구현한 좋아요 많은 순서대로 반환 회고하기 (0) | 2023.06.28 |
---|---|
영어 면접을 봤습니다. (0) | 2023.06.27 |
프로그래머스 lv.0 암호해독.js (0) | 2023.06.24 |
reduce 익히기 (0) | 2023.06.24 |
수학 어렵네.. (0) | 2023.06.22 |