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등
순위 알고리즘은 앞에서 다룬 개수 알고리즘의 확장형으로 볼 수 있습니다.