1) 문제
https://www.acmicpc.net/problem/10825
2) 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
static class Student implements Comparable<Student>{
String name;
int hanguk;
int english;
int math;
public Student(String name, int hanguk, int english, int math) {
this.name = name;
this.hanguk = hanguk;
this.math = math;
this.english = english;
}
@Override
public int compareTo(Student o) {
if(this.hanguk<o.hanguk) return 1;
else if(this.hanguk > o.hanguk) return -1;
else {
if(this.english<o.english) return -1;
else if(this.english>o.english) return 1;
else {
if(this.math<o.math) return 1;
else if(this.math>o.math) return -1;
else {
return this.name.compareTo(o.name);
}
}
}
}
}
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
List<Student> list = new ArrayList<>();
for(int i=0;i<N;i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String name = st.nextToken();
int hanguk = Integer.parseInt(st.nextToken());
int english = Integer.parseInt(st.nextToken());
int math = Integer.parseInt(st.nextToken());
list.add(new Student(name, hanguk,english , math));
}
Collections.sort(list);
for(int i=0;i<N;i++) {
Student cur = list.get(i);
// System.out.println(cur.name+" "+cur.hanguk+" "+cur.english+" "+cur.math);
System.out.println(cur.name);
}
}
}
3) 피드백
class Student에서 name 끼리 비교할 때 처음에는 char로 바꾸어서 빼는 식으로 비교했는데,
compareTo함수를 사용하면 아주 편리하게 비교할 수 있다는 것을 알게 되었다.
'Algorithm > BaekJoon' 카테고리의 다른 글
[BaekJoon][Java] G4 2617 구슬찾기 (2) | 2024.01.28 |
---|