등수 구하기

아기코딩단2·2022년 8월 7일
0

알고리즘

목록 보기
7/10

등수구하기
N(1<=N<=100)명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는
프로그램을 작성하세요.
▣ 입력설명
첫 줄에 N(3<=N<=1000)이 입력되고, 두 번째 줄에 국어점수를 의미하는 N개의 정수가 입력
된다. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데
92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다.
▣ 출력설명
입력된 순서대로 등수를 출력한다.
▣ 입력예제 1
5
87 89 92 100 76
▣ 출력예제 1
4 3 2 1 5

<!--my solution-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과 - 섹션2 - 4 - 등수 구하기</title>
    </head>
    <body>
        <script>
            function solution(arr) {
        // 등수구하기
        // 주어지는 값 점수의 배열
        // 구해야하는 것 각 점수들의 등수
            let n = arr.length
            let answer = Array.from({length : n}, () => 1); //배열의 길이가 5인 배열 생김 1차원 배열 초기화 방법
             // 0등은 존재 X 
            for (let i = 0; i < n; i++) { // 서로 비교해야하기 때문에 이중 for 문
                for(let j = 0; j < n; j++) {
                    if(arr[j]> arr[i]) {
                        answer[i]++;
                    }    
                    // 처음에 전부 1로 초기화 한 후 자기보다 큰 애를 만나면  ++ 시켜주면 됨
                }
                
            } return answer;
            
        }
            const scores = [99, 100, 80, 70];
            //최솟값이 1 최댓값이 4
            // 예상 출력 값 2, 1, 3, 4
            console.log(solution(scores));
        </script>
    </body>
</html>


잘나온다ㅇㅇ

로직은 생각했지만 배열을 1로 초기화하는 방법을 몰라서 선생님 강의 를 보고 풀었다.

중요 문장 : let n = arr.length
let answer = Array.from({length : n}, () => 1);
<== 배열의 초기화 방법

profile
레거시 학살자

0개의 댓글