31.8 순위 구하기: RANK 알고리즘

    순위(RANK) 알고리즘 또는 등수 알고리즘은 주어진 자료 중에서 순위(등수)를 구할 때 사용합니다. 모든 점수는 처음에는 1등으로 설정한 후 해당 점수보다 큰 점수가 나타날 때마다 등수를 1씩 증가시켜 순위를 낮추는 것(등수가 밀리는 것)이 핵심 로직입니다.

     

    순위 알고리즘 사용하기

    순위 알고리즘을 적용하여 주어진 범위의 데이터 중 지정한 범위 내에서 등수(순위)를 구하는 예제를 만들어 보겠습니다. 다음 내용을 입력한 후 실행해 보세요.

    순위 알고리즘 적용: RankAlgorithm.cs

    using System;
    using System.Linq;
    
    class RankAlgorithm
    {
        static void Main()
        {
            //① 입력
            int[] scores = { 90, 87, 100, 95, 80 };             //등수: 3, 4, 1, 2, 5
            int[] rankings = Enumerable.Repeat(1, 5).ToArray(); //모두 1로 초기화
    
            //② 처리: RANK
            for (int i = 0; i < scores.Length; i++)
            {
                rankings[i] = 1; //1등으로 초기화, 순위 배열을 매 회전마다 1등으로 초기화
                for (int j = 0; j < scores.Length; j++)
                {
                    if (scores[i] < scores[j]) //현재(i)와 나머지(j) 비교
                    {
                        rankings[i]++;         //RANK: 나보다 큰 점수가 나오면 순위 1증가
                    }
                }
            }
    
            //③ 출력
            for (int i = 0; i < scores.Length; i++)
            {
                Console.WriteLine($"{scores[i],3}점 : {rankings[i]}등");
            }
        }
    }

    실행 결과

     90점 : 3등
     87점 : 4등
    100점 : 1등
     95점 : 2등
     80점 : 5등

    순위 알고리즘은 앞에서 다룬 개수 알고리즘의 확장형으로 볼 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.