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
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스 js] 정수 내림차순으로 배치하기 (1) | 2023.10.26 |
---|---|
[프로그래머스 js] 문자열내 p와 y 개수 (2) | 2023.10.23 |
[프로그래머스 js] 문자열 정수로 바꾸기 (1) | 2023.10.22 |
[프로그래머스 js] 최댓값 만들기(1) (0) | 2023.09.28 |
[프로그래머스 js] 자리수 더하기 (1) | 2023.09.27 |