Algorithm/JUNGOL

[정올] 628 : 파일입출력 - 자가진단3 (*)

Gyuri 2022. 1. 11. 18:08

문제

10명의 학생 이름과 점수를 입력받아 이름과 점수, 등수를 입력받은 순서대로 출력하는 프로그램을 작성하시오.

단, 출력시 "이름", "점수", "등수"는 한 칸의 공백으로 구분을 하며, Name은 4칸(%4s), Score는 5칸(%5d), Rank는 각 4칸(%4d)으로 출력한다.

 

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

 

 

입력 예

Hong 90
Lim 85
Park 88
Gong 75
Lee 100
Seo 90
Jang 75
Song 90
Kim 95
Sung 60

출력 예

Name Score Rank
Hong    90    3
 Lim    85    7
Park    88    6
Gong    75    8
 Lee   100    1
 Seo    90    3
Jang    75    8
Song    90    3
 Kim    95    2
Sung    60   10

 

코드

import java.util.*;

class School {
    String name;
    int score;
    int rank;
}
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

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

        for(int i=0; i<a.length; i++) {
            a[i].name = sc.next();
            a[i].score = sc.nextInt();
            a[i].rank = 1;
        }

        // 성적 순으로 정렬
        for(int i=0; i<a.length; i++) {
            for(int j=0; j<a.length; j++) {
                if(a[i].score < a[j].score) { // 점수가 높을 수록 rank 숫자는 작아짐
                    a[i].rank++;
                }
            }
        }

        System.out.printf("%4s %5s %4s\n","Name", "Score", "Rank");
        for(int i=0; i<a.length; i++) {
            System.out.printf("%4s %5d %4d\n",a[i].name, a[i].score, a[i].rank);
        }
    }
}