🗃️javascript/프로그래머스

가장 큰 수 찾기(Lv.0)[reduce()와 Math.max()로 배열에서 가장 큰 값 찾기]

하얀성 2023. 1. 5. 14:38
<문제 설명>

 

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

입출력 예arrayresult
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

입출력 예 설명

입출력 예 #1

  • 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.

입출력 예 #2

  • 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

<제출 답안>

function solution(array) {
    return [array.reduce((a,b)=>Math.max(a,b)), array.indexOf(array.reduce((a,b)=>Math.max(a,b)))]
}

 

이거 못풀어서 3일 정도 계속 도전했더니... Math.max를 쓸줄 몰라서 뒷 문제에서 자꾸 막힘.

아래처럼 reduce가 아닌 spread Operator 써서하면 더 간단하다.

function solution(array) {
    let max = Math.max(...array);
    return [max, array.indexOf(max)];
}

<보충>

예제

 

Math.max() - JavaScript | MDN

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

developer.mozilla.org

Math.max()함수 사용하기

Math.max(10, 20);   //  20
Math.max(-10, -20); // -10
Math.max(-10, 20);  //  20
Copy to Clipboard

배열의 최대값 가져오기

Array.reduce() 숫자 배열의 최대 값을 찾는 데 사용할 수 있습니다. 숫자 배열의 요소, 각 값 비교 :

최대값을 찾는 데 사용할 수 있습니다.

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