프로그래머스 최댓값 만들기 2

CodeBee_·2023년 11월 2일

프로그래머스

목록 보기
22/31


최댓값 만들기 (2)

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

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

제한사항
-10,000 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers 의 길이 ≤ 100

입출력 예

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

입출력 예 #1
두 수의 곱중 최댓값은 -3 -5 = 15 입니다.
입출력 예 #2
두 수의 곱중 최댓값은 10
24 = 240 입니다.
입출력 예 #3
두 수의 곱중 최댓값은 20 * 30 = 600 입니다.


🤍 나의 풀이


function solution(numbers) {
  // 내림차순으로 만들어준다.
    numbers.sort((a, b) => (b - a));
  // 정수중에 가장 큰 수
    let integer = numbers[0] * numbers[1];
  // 음수 중에 가장 큰 수
    let negative = numbers[numbers.length -1] * numbers[numbers.length -2];
  // 양수와 음수의 곱을 비교해서 큰 수를 반환
    return integer > negative ? integer : negative ;
}

🪐 다른사람의 풀이 1

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

🪐 다른사람의 풀이 2

function solution(numbers) {
    var answer = [];
  // i가 numbers 배열의 길이보다 1 작은 동안에 (numbers 배열의 끝에서 두 번째 요소까지)반복
    for(let i = 0; i < numbers.length - 1; i++){ 
      // 변수 j를 i+1로 초기화하고, j가 numbers 배열의 끝까지 도달할 때까지 반복
        for(let j = i + 1; j < numbers.length; j++){ 
            answer.push(numbers[i] * numbers[j]);
        }
    }
  //배열의 최대값을 반환
    return Math.max(...answer);
}

profile
엉금엉금 공부 블로그

0개의 댓글