풀이방법
사용된 것:
정렬
2022.06.12
조건에 맞게 학생 클래스를 정의하고 Comparator를 오버라이드해주면 된다.
Comparator를 오버라이드하는 방법은 아래의 게시글에 정리해두었다.
코드
Java(2022.06.12)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
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++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i] = new Student(st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
//정렬
Arrays.sort(arr, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
int k1 = o1.k;
int k2 = o2.k;
if(k1<k2) return 1;
else if(k1>k2) return -1;
else{
int e1 = o1.e;
int e2 = o2.e;
if(e1<e2) return -1;
else if(e1>e2) return 1;
else {
int m1 = o1.m;
int m2 = o2.m;
if(m1<m2) return 1;
else if(m1>m2) return -1;
else {
String n1 = o1.name;
String n2 = o2.name;
return n1.compareTo(n2);
}
}
}
}
});
//순서대로 출력
for(Student s:arr) {
System.out.println(s.name);
}
}
}
//학생 클래스
class Student{
String name; //이름
int k; //국어 점수
int e; //영어 점수
int m; //수학 점수
public Student(String name, int k, int e, int m) { //생성자
this.name = name;
this.k = k;
this.e = e;
this.m = m;
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#1822 : 차집합 (0) | 2022.06.13 |
---|---|
#1246 : 온라인 판매 (0) | 2022.06.12 |
#2217 : 로프 (0) | 2022.06.12 |
#2309 : 일곱 난쟁이 (0) | 2022.06.12 |
#1302 : 베스트셀러 (0) | 2022.06.12 |