Algorithm/프로그래머스

[프로그래머스 js] 최댓값만들기(2)

양원준 2023. 10. 4. 11:24
728x90

문제 설명

 

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

 

 

 

제한사항

 

  • -10,000 <= numbers 원소 <= 10,000
  • 2<= numbers 길이 <= 100

 

 

입출력 예

 

  • [1,2,-3,4,-5] -> 15

 

 

 

나의 답

 

function solution(numbers) {
    var answer = 0;
    
    numbers = numbers.sort((a,b) => a-b)
    
    if(numbers[0]*numbers[1] >= 
       numbers[numbers.length-1]*numbers[numbers.length-2])
    {
        answer = numbers[0]*numbers[1]
    }
    else{
        answer = numbers[numbers.length-1]*numbers[numbers.length-2]
    }
    
    
    return answer;
}

오름차순으로 정렬해서 맨처음 2개 아니면 맨뒤에 2개의 숫자를 곱한 값중 하나가 제일 큰값이라 생각하였다

뭐 -인 숫자가 얼마나 나올지는 미지수지만 어차피 몇개든 2개중 하나는 최대값일테니,,?

 

 

 

 

 


다른사람 답

 

for문을 이용하여 푼 분들도 있고

나처럼 푼분들이 있는데 이 방식이 좋은 방식인거 같다

 

다만, if문으로 첫번째와 마지막 2수의 곱을 비교하는 대신 Math.Max를 사용하는게 더 깔끔해보인다

 

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