더북(TheBook)

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등

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

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