Algorithm/JUNGOL

[정올] 199 : 구조체 - 형성평가5

Gyuri 2022. 1. 11. 16:28

문제

10 이하의 정수 n을 입력받은 후 n명의 이름(영문자 20자 이하)과 세 과목의 점수를 입력받아 총점이 높은 순으로 정렬하여 출력하는 프로그램을 작성하시오.

 

입력 예

3
Chung 50 65 89
Nolbu 100 38 99
Hungbu 85 95 77

출력 예

Hungbu 85 95 77 257
Nolbu 100 38 99 237
Chung 50 65 89 204

 

코드

import java.util.*;

class School {
    String name;
    int a;
    int b;
    int c;
    int total;
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        School temp;

        School [] s = new School[n];
        for(int i=0; i<n; i++) {
            s[i] = new School();
        }

        for(int i=0; i<n; i++) {
            s[i].name = sc.next();
            s[i].a = sc.nextInt();
            s[i].b = sc.nextInt();
            s[i].c = sc.nextInt();

            s[i].total = s[i].a + s[i].b + s[i].c;
        }

        for(int i=0; i<n; i++) {
            for(int j=0; j<n-1-i; j++) {
                if(s[j].total < s[j+1].total) {
                    temp = s[j+1];
                    s[j+1] = s[j];
                    s[j] = temp;
                }
            }
        }

        for(int i=0; i<n; i++) {
            System.out.printf("%s %d %d %d %d\n", s[i].name, s[i].a, s[i].b, s[i].c, s[i].total);
        }
    }
}