Algorithm/JUNGOL

[정올] 212 : 파일입출력 - 형성평가8 (*)

Gyuri 2022. 1. 12. 00:52

문제

첫째 줄에 정수 n(2≤n≤100)을 입력받고 다음 줄부터 n명 학생의 3과목 점수를 입력받아 평균을 구하여 점수가 높은 순으로 출력하시오.
단, 평균은 소수 둘째 자리에서 반올림하여 소수 첫째 자리까지 출력하시오.

 

* 표준입출력방식으로 작성하세요.

 

 

입력 예

5
85 48 68
73 55 89
90 73 86
63 90 100
95 76 23

출력 예

84.3
83.0
72.3
67.0
64.7

 

코드

import java.util.*;

class School {
    int a;
    int b;
    int c;
    double avg;
}

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

        int n = sc.nextInt();

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

        School temp;

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

            s[i].avg = (s[i].a + s[i].b + s[i].c) / (float)3;
        }

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

        for (int j = 0; j < s.length; j++) {
            System.out.printf("%.1f\n", s[j].avg);
        }

    }
}

▷평균을 구할 때 소수 둘째 자리에서 반올림 해 소수 첫째 자리까지 출력하기 위해선

s[i].avg = (s[i].a + s[i].b + s[i].c)/(float)3;

이와 같이 float로 형변환을 해줘야 한다.