[JAVA]조건이 있는 석차 프로그램
정보 올림피아드 세계 대회가 있다.
그 대회의 결과가 표로 주어졌다.
점수 1등, 2등, 3등 순으로 금, 은, 동메달을 수여하려고 한다.
하지만 나라별 메달의 최대수는 두개이다.
그렇기 때문에 원래라면 1번 나라의 3번 학생이 동메달을 수여받아야 하지만 3번 나라의 4번 학생이 동메달을 수여받게 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Student[] students = new Student[n];
for ( int i = 0; i < students.length; i++ ) {
Student st = new Student();
st.nationNumber = sc.nextInt();
st.studentNumber = sc.nextInt();
st.score = sc.nextInt();
students[i] = st;
}
sc.close();
for ( int i = students.length-1; i > 0; i-- ) {
for ( int j = 0; j < students.length-1; j++ ) {
if ( students[j].score < students[j+1].score ) {
Student xstu = students[j];
students[j] = students[j+1];
students[j+1] = xstu;
}
}
}
if ( students[0].nationNumber != students[1].nationNumber ) {
for ( int i = 0; i < 3; i++ ) {
System.out.printf("%d %d%n", students[i].nationNumber, students[i].studentNumber );
}
}
else if ( students[0].nationNumber == students[1].nationNumber ) {
System.out.printf("%d %d%n", students[0].nationNumber, students[0].studentNumber );
System.out.printf("%d %d%n", students[1].nationNumber, students[1].studentNumber );
for ( int i = 2; i < students.length; i++ ) {
if ( students[0].nationNumber != students[i].nationNumber ) {
System.out.printf("%d %d%n", students[i].nationNumber, students[i].studentNumber );
break;
}
}
}
}
}
class Student {
int nationNumber;
int studentNumber;
int score;
}
클래스를 만들어서 입력값을 받게 하고 석차순으로 정렬 후 조건문을 걸어 1등과 2등의 나라 번호가 같은 경우 3등에는 다른 나라의 학생 중에서 가장 성적이 좋은 학생이 오도록 하였다.
잘 만들었다고 할 순 없지만 이렇게 만드는 것도 오래 걸렸다. 다른 사람이 짠 코드도 궁금하다.