2-5) 등수구하기

김예지·2021년 8월 26일
0

문제

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


문제 풀이

코드

  • 등수를 저장할 answer배열을 선언한다. let answer=Array.from({length:n}, ()=>1); 을 통해, 1로 초기화 된 n길이의 배열을 생성한다. (0등은 없기 때문에, 1으로 초기화한다.)
  • 이차원 탐색을 사용한다. i가 기준이 되는 점수이고, j를 통해 모든 점수를 탐색한다. 이 때, j의 점수가 i의 점수보다 더 크다면 i의 등수를 +1한다.(j로 인해 등수 낮아짐)
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){  
                let n=arr.length;
                let answer=Array.from({length:n}, ()=>1); //배열 요소 모두 1로 초기화
                //i의 등수 구함 
                for(let i=0; i<n; i++){
                    for(let j=0; j<n; j++){
                        if(arr[j]>arr[i]) answer[i]++;
                    }
                }
                return answer;
            }

            //let arr=[87, 89, 92, 100, 76];
            let arr=[92, 92, 92, 100, 76];
            console.log(solution(arr));
        </script>
    </body>
</html>

결과

4 3 2 1 5

추가

이후에 sort 메소드를 통해 arr을 순서대로 정렬하고, 등수를 지정해보자.

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 9월 11일

9/10

답글 달기