[TIL] 240331 (가장 큰 수 찾기)

·2024년 3월 31일

TIL

목록 보기
7/268

프로그래머스 문제

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

내가 작성한 답

function solution(array) {
    var answer = [0,0];
    for (let i=0; i<array.length; i++){
        if (array[i]>answer[0]) {
            answer = [array[i], i]
        }
    }
    return answer;
}

가장 큰 수를 찾기 위해 반복문을 사용했고, i와 인덱스값이 같음을 이용하여 배열에 넣어주었다.
이렇게 문제를 해결하기는 했지만, 이 문제를 더 간단히 해결할 수 있고 내가 제대로 익히지 않은 두 메서드가 있어 정리가 필요하다고 생각했다.

새롭게 알게된 것

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

Array.prototype.indexOf() : Array 인스턴스의 indexOf() 메서드는 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우 -1을 반환합니다.

const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];

console.log(beasts.indexOf('bison'));
// Expected output: 1

// Start from index 2
console.log(beasts.indexOf('bison', 2));
// Expected output: 4

console.log(beasts.indexOf('giraffe'));
// Expected output: -1

이를 통해 아주 간단하게 Array에서 최댓값 및 최댓값의 index를 찾을 수 있음을 알게 되었다.

더 효율적인 답

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

반복문을 쓸 필요 없이 바로 배열을 만들어 메서드를 사용해 return하면 쉽게 문제가 해결된다.

profile
웹 프론트엔드 개발자

0개의 댓글