본문 바로가기
Language/알고리즘 개념정리

자바 순위(Rank) 알고리즘 정리

by wakestand 2021. 5. 29.
반응형

순위(Rank) 알고리즘이란

주어진 범위 데이터의 순위를 구하는 알고리즘인데

 

중요한 점은 순위를 보관할 배열을

추가로 하나 만들어서

해당 배열에 값별 순위를 넣어줘야 한다

 

이후 for 문을 돌리면서

해당 값의 순위를 1로 시작하고

 

for 문 안에서 for 문을 한번 더 돌리면서

배열의 i값과 다른 값(j)들을 비교하는데

 

배열의 i값보다 큰 값이 있으면

i값에 해당하는 순위 배열의 i값을 1씩 올려주면 된다

 

이러면 for 문이 돌아가면서

값을 가지고 다른 값들과 비교하면서

현재 값보다 클 경우 +1을 해 주기 때문에

값별 순위가 쭉 들어가게 된다

 

이후 출력해보면

값별로 순위가 제대로 찍혀 나오는 것이 보인다

 

결국 순위 알고리즘의 포인트는

값 배열 / 순위 배열

두 배열을 만든 뒤 

 

for 문을 2번 돌려주면서

i 값보다 큰 j 값이 있으면

순위 배열의 i 값을 +1 해주는 식으로

순위를 쭉 깔아주면 된다

 

마지막으로 예제에 사용한 코드는 다음과 같다

 

	public static void main(String[] args) {
		// 순위 알고리즘(Rank Algorithm)
		// 주어진 범위 데이터의 순위를 구하기
		int[] arr = {100, 92, 87, 91, 10, 40}; // 점수
		int[] rankArr = {1, 1, 1, 1, 1, 1}; // 각 점수별 순위(1로 초기화)
		
		for(int i = 0; i<arr.length; i++) {
			rankArr[i] = 1; // 순위 배열을 for 돌때마다 1등으로 초기화
			for(int j = 0; j<arr.length; j++) { // 배열 i 인덱스의 점수와 나머지 점수 비교
				if(arr[i] < arr[j]) { // i 인덱스의 값보다 크다면
					rankArr[i] = rankArr[i] + 1; // 순위 증가
				}
			}
		}
		
		for(int i = 0; i<arr.length; i++) {
			System.out.println("점수 : " + arr[i] + " 순위 : " + rankArr[i] );
		}
	}
반응형

댓글