Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[JavaScript] 프로그래머스 코딩테스트 입문 : 최댓값 만들기 (2) 본문

⚙️ 코딩테스트

[JavaScript] 프로그래머스 코딩테스트 입문 : 최댓값 만들기 (2)

썸머몽 2023. 3. 25. 14:14
728x90

문제 및 제한사항

 

정수 배열 numbers 매개변수로 주어집니다. numbers 원소 개를 곱해 만들 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

**제한사항**

-10,000 ≤ numbers의 원소 ≤ 10,000

2 ≤ numbers  길이 ≤ 100

 

풀이 방법

 

예를 들어 numbers = [1, 2, -3, 4, -5] 일 경우 최댓값은 15가 되어야 한다.

음수, 양수, 0, 같은 수까지 경우의 수가 많아서 (특히 음수) 어떻게 해야 할지 고민했는데 의외로 간단했다.

먼저 내림차순이든 오름차순이든 차순으로 정리를 한다 > 그러면 한쪽엔 양수/한쪽엔 음수가 있게 된다.

 

예시를 내림차순으로 해보면 아래와 같다.

이 때 큰수끼리 곱해보고 작은수끼리 곱했을 때 어느 것이 더 큰지 비교하면 된다.

 

[4, 2, 1, -3, -5]

8 < 15

 

코드

function solution(numbers) {
    numbers.sort((a, b) => a - b);
    return Math.max(numbers[0] * numbers[1], numbers[numbers.length-1] * numbers[numbers.length-2]);
}
728x90