자료구조 & 알고리즘/코딩테스트

[JavaScript/코딩테스트] 코테 입문 <가장 큰 수 찾기>

칠구의 스터디 2024. 3. 21. 13:31

https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc

 

코딩테스트 입문 | 프로그래머스 스쿨

코딩테스트에 처음 도전하는 사람들을 위한 입문 문제 모음. 쉬운 문제부터 하나씩 도전해 보면서 코딩테스트에 자신감도 붙이고 문제 해결 능력을 키워보세요!

school.programmers.co.kr

문제 출처

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

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

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

 

처음엔 sort를 이용해서 오름차순을 만든 후 인덱스[0]을 찾아 가장 큰 수를 찾고 그 다음 array배열에서 인덱스 값을 찾으려고 했다 그런데 가장 큰 수를 찾는 건 쉬웠으나 array배열에서 인덱스 값이 찾아지지 않고 계속 0을 반환했다 ㅠㅠ

나의 처음 틀린 답
function solution(array) {
    var answer = [];
    let a = array.sort((a,b) => b-a);
    answer.push(a[0]);
    
    for(let i = 0; i < array.length; i++) {
        if (a[0] === array[i]) {
            answer.push(array.indexOf(array[i])); 
        }
    }
    return answer;
}

그렇게 혹시 배열에서 가장 큰 수를 찾는 다른 방법이 있나 찾던 중 

배열에서 최댓값을 찾는 Math.max() 함수를 발견했고 문제를 풀 수 있었다.

 

나의 정답
function solution(array) {
    var answer = [];
    let maxnum = Math.max(...array);
    let maxindex = array.indexOf(Math.max(...array));
    answer.push(maxnum,maxindex);
    return answer;
}

다른 분의 풀이
function solution(array) {
    let max = Math.max(...array);
    return [max, array.indexOf(max)];
}

나와 같은 방법으로 푼 방법인데 더 짧게 하는 방법이 있었다...!!

더 짧게 푸는 방법을 알 수 있었고 Math.max()도 알게 된 문제였따