Java

[백준 10825] 국영수 (JAVA)

iheeeee6-6 2023. 2. 21. 15:38
728x90

https://www.acmicpc.net/problem/10825

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

 

Student 객체를 생성하여 문제를 풀었다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

	static class Student {
		String name;
		int a; //국
		int b; //영
		int c; //수
		Student(String name,int a,int b, int c){
			this.a=a;
			this.b=b;
			this.c=c;
			this.name=name;
		}
	}
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		Student[] arr = new Student[n];
		for(int i=0;i<n;i++) {
			String[] str = br.readLine().split(" ");
			arr[i]=new Student(str[0],Integer.parseInt(str[1]),Integer.parseInt(str[2]),Integer.parseInt(str[3]));
		}
		Arrays.sort(arr,(s1,s2)->{
			if(s1.a==s2.a) {
				if(s1.b==s2.b) {
					if(s1.c==s2.c) {
						return s1.name.compareTo(s2.name);
					}else {
						return s2.c-s1.c;
					}
				}else {
					return s1.b-s2.b;
				}
			}else {
				return s2.a-s1.a;
			}
		});
		for(int i=0;i<n;i++) {
			System.out.println(arr[i].name);
		}
		
	}

}