저장을 습관화

프로그래머스 LV.0 최댓값 만들기 (2) 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 최댓값 만들기 (2)

ctrs 2023. 9. 18. 22:26

프로그래머스 LV.0 최댓값 만들기 (2)

https://school.programmers.co.kr/learn/courses/30/lessons/120862

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

최댓값 만들기 (2)


2. 문제 설명

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


3. 제한 사항

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

- 2 ≤ numbers 의 길이 ≤ 100


4. 예시

numbers result
[1, 2, -3, 4, -5] 15
[0, -31, 24, 10, 1, 9] 240
[10, 20, 30, 5, 5, 20, 5] 600


5. 기본 제공 코드

function solution(numbers) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

const solution = (numbers) => {
  numbers.sort((a, b) => a - b);
  let mm = numbers[0] * numbers[1];
  let pp = numbers[numbers.length - 1] * numbers[numbers.length - 2];

  return mm > pp ? mm : pp;
};

 

6-2. VSC에 작성한 내용

const solution = (numbers) => {
  numbers.sort((a, b) => a - b);
  let mm = numbers[0] * numbers[1];
  let pp = numbers[numbers.length - 1] * numbers[numbers.length - 2];

  return mm > pp ? mm : pp;
};

// 테스트
console.log(solution([1, 2, -3, 4, -5]));
console.log(solution([0, -31, 24, 10, 1, 9]));
console.log(solution([10, 20, 30, 5, 5, 20, 5]));


7. 특이사항

없음


8. 다른 사람이 작성한 답

8-1. 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]);
}

 

8-2.

function solution(numbers) {
    const N = numbers.length;

    numbers.sort((a,b) => a - b);

    return Math.max(
        numbers[N-1] * numbers[N-2],
        numbers[0] * numbers[1]
    )
}