본문 바로가기
기초다지기/JS 코딩테스트

javascript 정수 배열중 두 개를 곱해 최대값 만들기

by 김빵그 2023. 4. 20.

numbers 배열 안에 있는 숫자 두개를 곱해 최대값을 뽑아내는 문제였다

처음에 문제를 딱 보자마자 쉽네 ㅋ 하고 후다다 코드를 작성

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

numbers 배열을 내림차순으로 정리후 배열 첫번째와 두번째있는 수를 곱하면 되는거 아닌가? 했는데..

문제를 잘못봤다 .. ! 음수의 값도 있었던 것.  이후 다시 정직하게 코드를 짜기 시작했다

내 답

function solution(numbers) {
    var answer = numbers.sort((a,b) =>b-a);
    let front = answer[0]*answer[1]; 
    let back = answer[numbers.length- 1] *answer[numbers.length - 2]
    return front > back ? front : back;
}

너무나 정직한 코드에 올리기도 민망하지만 ㅋㅋㅋㅋㅋㅋ... 맨 앞 두개의 곱과 맨 뒤 두 수의 곱을 비교해서 ... 더 큰쪽으로 리턴하는 삼항연산자로 표시했다. 그냥 훌러덩 내고나서 아 좀 다른 함수를 써볼껄! 이란 생각과 후회가 뒤늦게 밀려오긴 했지만.. 다른 분들의 코드를 보며 더 공부를 해야겠다

 


다른 답

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

Math.max()

Math.max() 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환한다. 배열 최대값 찾을때도 용이하다

console.log(Math.max(1, 3, 2));
// Expected output: 3

console.log(Math.max(-1, -3, -2));
// Expected output: -1

const array1 = [1, 3, 2];

console.log(Math.max(...array1));
// Expected output: 3

///
var arr = [1,2,3];
var max = arr.reduce(function(a, b) {
    return Math.max(a, b);
}, -Infinity);

 

 

 

Math.max() - JavaScript | MDN

Math.max() 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.

developer.mozilla.org