본문 바로가기
JAVA 줘? 잡아줘!

[Java]Day032 : 등수 매기기

by Boxseo 2023. 9. 6.

초기화된 (값이 입력된) 배열이 있을 때, 그 값들 끼리 순위를 매기는 알고리thm 을 보자

아래 (예제)를 보면 점수가 들어있는 5칸 짜리 배열이 있고,

크기가 같은 새 배열 rank[] 을 하나 생성한다. 

초기화 안 했을 시, 기본 배열의 초기값은 전부 {0, 0, 0, 0, 0} 이다

 

그리고 [ i ]  와 [ j ] 를 2중 for 문으로 돌려서

score[ i ] < score [ j ]

각각 전부 비교를 한 다음에, 값이 작을 경우 같은 주소의 rank[ i ]에 값을 증가시킨다.

그러면 같은 값이 있지 않으면 0 1 2 3 각각 등수가 rank [] 에 저장될 것이고

보통 등수는 1 2, 3, 4 으로 표기하기때문에 출력할 때는 rank 에 있는 값에 '1'을 더하여 출력하면 순위가 된다.

// 순위 알고리즘
// 1. 배열과 과 같은 크기(길이)의 배열을 하나 더 만든다.
// 2. 각 주소의 값을 1로 초기화 한 후, 기존 배열의 값을 전부 하나씩 비교하여 작으면 rank 배열의 그 위치의 값에 '+1'을 해주면 된다

int[] score = {90,87,100,95,80};
int[] rank	= new int[score.length];

    for(int i=0; i<score.length; i++) {
        for(int j=0; j<score.length; j++) {
            if(score[i] < score[j])
                rank[i]++;
        }
        System.out.println(score[i]+"점\t"+(rank[i]+1)+" 등");
    }