알고리듬 문제를 푸는데 순위를 매겨야 할 때마다 막혀서 이에 대해 정리하고자 한다.
순위 매기기
아래의 배열에 대해 큰 순서대로 순위를 매겨보자.
int[] arr = {12, 34, 46, 37, 21, 48, 53, 35, 19};
먼저 순위 정보를 담을 배열을 생성한다.
int[] rank = new int[arr.length];
다음으로 아래의 이중 for문을 돌린다.
for(int i = 0; i < arr.length; i++) {
rank[i] = 1;
for(int j = 0; j < arr.length; j++)
if(arr[i] < arr[j])
rank[i]++;
}
한 값을 다른 값과 비교해 가면서 조건이 맞으면 순위 값을 1 증가시킨다. 조건은 상황에 맞게 바꾸면 된다.
전체 코드
import java.util.Arrays;
public class test2 {
public static void main(String[] args) {
int[] arr = {12, 34, 46, 37, 21, 48, 53, 35, 19};
int[] rank = new int[arr.length];
for(int i = 0; i < arr.length; i++) {
rank[i] = 1;
for(int j = 0; j < arr.length; j++)
if(arr[i] < arr[j])
rank[i]++;
}
System.out.println(Arrays.toString(rank));
}
}
사실 알고 보면 매우 쉬운데 그동안 이 방법을 떠올리지 못한 것에 대한 아쉬움이 크다.
'Algorithm & PS > Algorithm' 카테고리의 다른 글
알고리듬 - 맨해튼 거리, 유클리드 거리 (0) | 2023.11.26 |
---|---|
알고리듬 - 순열 (0) | 2023.11.24 |
알고리듬 - 최대 공약수 & 최소 공배수 구하기(유클리드 호제법) (0) | 2023.08.30 |
알고리듬 - 소수 구하기(에라토스테네스의 체) (0) | 2023.08.30 |
알고리듬 - 깊이 우선 탐색, 너비 우선 탐색 (0) | 2023.08.28 |