728x90
등수 구하기
▣ 문제 설명
N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다.
▣ 입력 설명
첫 줄에 N(3<=N<=100)이 입력되고, 두 번째 줄에 국어점수를 의미하는 N개의 정수가 입력 된다.
▣ 출력 설명
입력된 순서대로 등수를 출력한다.
▣ 입력 예제1
5
87 89 92 100 76
▣ 출력 예제1
4 3 2 1 5
📌 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
// 점수가 담길 배열
static int[] score;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 학생 수
int N = Integer.parseInt(br.readLine());
score = new int[N];
String secondLine = br.readLine();
StringTokenizer st = new StringTokenizer(secondLine, " ");
// 배열에 학생들의 점수 넣기
for(int i=0; i<N; i++) {
score[i] = Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
int[] answer = solution(N);
// 출력 폼 맞추기
for(int i=0; i<N; i++) {
sb.append(answer[i])
.append(" ");
}
System.out.println(sb);
}
static int[] solution(int N) {
// 등수를 매길 배결
int[] rank = new int[N] ;
// 등수 (최소 등수는 1등)
int count = 1;
// 등수 매기기
for(int i=0; i<N; i++) { // 기준
count = 1;
for(int k=0; k<N; k++) { // 비교 대상
// 자기 자신과 비교할 경우 넘기기
if(i==k) continue;
// 비교 대상 점수가 기준 점수보다 클 경우 등수에 +1
if(score[i]<score[k]) count++;
}
rank[i] = count;
}
return rank;
}
}
728x90
'[알고리즘] > 자바 알고리즘 공부' 카테고리의 다른 글
[알고리즘 공부] 점수 계산 (0) | 2022.04.15 |
---|---|
[알고리즘 공부] 소수 구하기 (에라토스테네스 체) (0) | 2022.04.14 |
[알고리즘 공부] 유효한 팰린드롬 (0) | 2022.04.08 |
[알고리즘 공부] 회문 문자열 (0) | 2022.04.08 |