최댓값 만들기2
반응형
문제
입출력 예
function solution(numbers) {
// 입력받은 배열을 오름차순으로 정렬
let sortNumber = numbers.sort((a,b) => a-b)
// 음수의 가장 작은값과 그다음 작은값의 곱
let max = sortNumber[0] * sortNumber[1];
// 양수의 가장 큰값과 그다음 큰값의 곱
let max2 = sortNumber[sortNumber.length -1] * sortNumber[sortNumber.length -2]
두개의 수를 비교하여 더 큰 수를 반환
return max > max2 ? max : max2;
}
이번 문제는 음수가 포함되는 최댓값을 구하는 문제입니다. 입출력 예의 첫번째를 보면 -3과 -5가 곱해졌을때 가장 큰수 입니다. 음수를 고려하여 문제를 해결해야 합니다.
해당 문제 반복문 두개를 사용하여 문제를 해결할 수도 있지만 그렇게 된다면 성능이 O(n^2)이 되버립니다.
문제를 접근하는 방법으로는
1. 입력받은 배열을 오름차순으로 정렬합니다.
2. 가장 작은 음수와 두번째 작은 음수의 곱을 구합니다.
3. 가장큰 양수와 두번큰 양수의 곱을 구합니다.
4. 두개의 수를 비교하여 더 큰값이 가장 큰 값이 됩니다.
정렬을 한번 사용하기 때문에 성능은 O(nlogn)이 됩니다.
반응형
'Programming' 카테고리의 다른 글
Math - 자바스크립트 (0) | 2023.03.15 |
---|---|
스프레드 연산자 `...` - 자바스크립트 (0) | 2023.03.14 |
중복된 숫자 개수 (0) | 2023.03.12 |
빈도수 패턴(Frequency pattern) (0) | 2023.03.12 |
Object & Array (0) | 2023.03.11 |
댓글