Solution
1. 일단 배열을 생성한다. 모든 값이 0이다.
2. 2중 for문을 작성하고 바깥쪽 for문의 인덱스의 배열에 1을 할당한다.
3. 안쪽 for문에서 i 번째 배열보다 큰 값이 나오면 등수의 숫자는 커지므로 i번째 배열의 값을 증가시킨다.
아래 설명이 더 분명하다.
순위 알고리즘
* 주어진 범위 데이터의 순위를 구하는 알고리즘인데,
*
* 순위를 보관할 배열을 추가로 하나 만들어서 해당 배열에 값별 순위를 넣어줘야 한다.
*
* 이후 for문을 돌리면서 해당 값의 순위를 1로 시작하고
* for문 안에서 for문을 한 번 더 돌리면서 배열의 i값과 다른 값(j)들을 비교하는데
* 배열의 i값보다 큰 값이 있으면 i값보다 큰 값이 있으면 i값에 해당하는 순위 배열의 i값을 1씩 올려준다.
public class Main {
private int[] solution(int n, int[] arr) {
int[] rankArr = new int[n];
for (int i = 0; i < n; i++) {
rankArr[i] = 1;
for (int j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) {
rankArr[i]++;
}
}
}
return rankArr;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
for (int i : T.solution(n, arr)) {
System.out.print(i + " ");
}
}
}
'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글
인프런 7. 점수계산 (Java) (0) | 2022.04.21 |
---|---|
인프런 6. 뒤집은 소수 (Java) (0) | 2022.04.20 |
인프런 5.소수(에라토스테네스 체)_Java (0) | 2022.04.20 |
인프런 4. 피보나치 수열(Java) (0) | 2022.04.20 |
인프런 3. 가위 바위 보 (Java) (0) | 2022.04.20 |