등수 구하기


:raising_hand: 알고리즘 공부 간 기록이 필요한 문제들에 대한 정리를 기록하는 포스트 입니다.


1. 문제 요건


N 명의 점수를 입력한 배열 이 주어지고 그 배열의 등수 구하기

2. 코드


  • 기본 솔루션

function solution(arr) {
    let n = arr.length // 길이
    // 신규배열 생성(등수초기화) 및 1로 초기화
    let tarr = Array.from({length: n}, () => 1) 
    for(let i=0; i < n; i++) { // 실제 arr 배열 값 특정
        for(let j=0; j < n; j++) { // arr 값(i) 에 대해 큰값 확인
            if(arr[i] < arr[j]) {  // arr[i] 값 보다 크면 등수 업
                tarr[i]++
            }
        }
    }
    return tarr
}

let arr = [87, 86, 92, 100, 76]

3. 결과정리


주어진 배열의 값에 대하여 등수를 구하는 문제였다. 여기서 기억할 것은 신규 배열로 등수를 초기화 후 반복문을 통하여 큰 값에 대한 갯수만큼 등수를 업하는 아이디어 이다.


Array.from({length: arr.length}, () => 1)

이런 아이디어를 바로바로 생각해 내어야 한다. 나의 경우 모든 배열을 검증하려는 식으로 접근을 하였는데 최대한 외적으로 간단하게 풀 수 있는 방법을 계속해서 고민해야할 것이다.