꺾이지 않는 마음

[프로그래머스] Lv.0 가장 큰 수 찾기 JS 풀이 본문

코딩테스트 기록

[프로그래머스] Lv.0 가장 큰 수 찾기 JS 풀이

중요한 것은 2022. 10. 25. 19:38

문제 설명

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

제한사항

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

입출력 예

n result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

✨나의 풀이

1️⃣ for 반복문과 비교연산을 활용하여 가장 큰 수 도출

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

 

for 문을 사용하여 배열 내의 각 원소를 순회하였다.

각 원소를 순회하면서 이전 값과 비교했을 때 더 크면 그 값과 인덱스를 변수에 저장하였다.

그렇게 배열을 마지막까지 순회하고 나면, 결국 변수에는 가장 큰 원소 값과 인덱스만이 남는다.

해당 변수를 [] 배열에 담아 출력하여 답을 도출하였다.

 

답을 작성하면서 분명 이것 보다 더 간단한 해결책이 있을 것이란 생각이 들었다.

뭔가 더 깔끔한 알고리즘을 가진 함수가 있을 거 같은 느낌..

🟨다른 풀이

Math.max()와 스프레드 연산자 사용

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

 

답을 제출 후 다른 사람의 답안을 보았다.

역시나 훨씬 더 깔끔한 풀이가 있었다.

 

수학 메서드 Math.max()를 사용하여 주어진 값 중 최대값을 도출할 수 있었다.

배열 안에 있는 원소들은 스프레드 연산자를 활용하여 max의 인수로 줄 수 있었다.

 

수학 관련 메서드는 ceil, round, floor 같은 반올림 관련 함수만 자주 써서 깜빡하고 있었다.

스프레드 연산자도 배웠지만 이렇게 활용할 수 있다니 다시 한번 배움을 얻게 됐다.

 

 

오늘도 성장 +1 스택

 

Comments