예제
import java.util.Arrays;
import java.util.Collections;
// 학생들의 성적을 1등 부터 순위를 매겨서 출력해보시오
// 이 문제는 순우(Ranking) 알고리즘에 대해서 알고 있는지를 묻는 문제이다.
public class Algorithm {
public static void printRanking(Integer[] scores, int[]ranking) {
//배열 길이
int scores_len = scores.length;
System.out.println("총 " + scores_len + "명 학생의 성적과 등수는?");
for(int i = 0; i < scores_len; i++) {
System.out.print(scores[i] + "점 -> " + ranking[i] + "등 ");
System.out.println();
}
}
public static void main(String[] args) {
// [1] 배열 선언 -> 성적 배열, 랭킹 배열 - 2가지 생성
Integer[] scores = {88, 50, 38 , 100, 90, 100, 99, 75};
int s_len = scores.length;
int[] ranking = new int[s_len];
Arrays.sort(scores, Collections.reverseOrder());
//[2] : 반복문을 돌면서 랭킹처리
for(int i = 0; i < s_len; i++) {
//랭킹 초기화 -> 0 -> 일단은 전부 1등으로 초기화
ranking[i] = 1;
//중첩 반복문
for(int j = 0; j < s_len; j++) {
if(scores[i] < scores[j]) {
ranking[i]++;
}
}
}
//[3] : 출력 -> 별도의 메서드호출
printRanking(scores, ranking);
}
}
총 8명 학생의 성적과 등수는?
100점 -> 1등
100점 -> 1등
99점 -> 3등
90점 -> 4등
88점 -> 5등
75점 -> 6등
50점 -> 7등
38점 -> 8등
1. 성적 배열과 랭킹 배열선언
- 학생들의 성적을 나타내는 Integer 타입의 배열인 scores 와 랭킹을 저장하는 int 타입의 배열인 ranking을 선언하고 초기값을 할당한다.
- 예제에서는 "Integer[] scores = {88, 50, 38, 100, 90, 100, 99, 75};" 와 같이 성적 배열 scores 와 ranking 배열을 선언하고 초기값을 할당하였다.
2. 성적 내림차순 정렬
- "Arrays.sort() 메서드와 Colections.reverseOrder()"를 사용하여 성적 배열을 scores를 내림차순으로 정렬한다.
- 예제에서는 "Arrays.sort(scres, Collections.reverseOrder());"와 같이 성적 배열을 내림차순으로 정렬한다.
3. 랭킹 계산
- 랭킹은 성적 배열에서 해당 학생의 성적이 높은지 비교하여 계산된다. 더 높은 성적의 학생이 있을수록 해당 학생의 랭킹이 낮아진다.
- 를 우해 중첩 반복문을 사용하여 각 학생의 랭킹을 계산한다. 내부 반복문에서는 성적 배열을 처음부터 끝까지 돌면서 해당 학생보다 높은 성적이 있는지 비교한다.
- 높은 성적을 발견할 때마다 랭킹을 1씩 증가시킨다.
'Java > JAVA 100 문제 풀이' 카테고리의 다른 글
자바 part.5 문제풀이 - while 반복문과 continue로 짝수만 출력하기 (0) | 2023.07.30 |
---|---|
자바 part.5 문제풀이 - 자바 알고리즘: 배열 내 숫자 빈도 수 계산하기 (0) | 2023.07.29 |
자바 part.4 문제풀이 - 성적 내차순 정렬하기: Arrays.sort() 및 Collections.reverseOrder() 활용 (0) | 2023.07.28 |
자바 part.4 문제풀이 - 성적 오름차순 정렬하기: Arrays.sort() 메서드 활용 (0) | 2023.07.28 |
자바 part.4 문제풀이 - 랜덤 정수 배열에서 최소값과 최대값 구하기 (0) | 2023.07.28 |