본문 바로가기

최댓값 만들기2

D-caffein 2023. 3. 13.
반응형

문제

최댓값 만들기2

 

입출력 예

최댓값 만들기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

댓글