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);
}
}
}