๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 10825๋ฒ ๊ตญ์์ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ๋ ์ ๋ ฌ ๊ธฐ์ค ์ฌ์ ์์ ๊ดํ ๋ฌธ์ ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ์๋ฐ์ Comparator์ ์์์ผ ํ๋ค.
๋ง์ฝ Comparator
๊ณผ Comparable
์ ๋ํด์ ์์ง ๋ชปํ๋ค๋ฉด Java์์ Comparator๋ก ์ ๋ ฌ ๊ธฐ์ค ๋ฐ๊พธ๊ธฐ์์ ํ์ธํ ์ ์๋ค.
์ ๊ทผ๋ฒ
์ด๋ฒ์๋ ์ ๋ ฌ ์กฐ๊ฑด์ด 4๊ฐ๊ฐ ์กด์ฌํ๋ค.
- ๊ตญ์ด ์ ์๊ฐ ๊ฐ์ํ๋ ์์๋ก
- ๊ตญ์ด ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์์ด ์ ์๊ฐ ์ฆ๊ฐํ๋ ์์๋ก
- ๊ตญ์ด ์ ์์ ์์ด ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์ํ ์ ์๊ฐ ๊ฐ์ํ๋ ์์๋ก
- ๋ชจ๋ ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์ด๋ฆ์ด ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก
์ฌ๊ธฐ์ 4๋ฒ์ด ์๋ง ์ ์ผ ๊น๋ค๋ก์ด ์กฐ๊ฑด์ด ์๋๊น ์ถ๋ค.
๋ค๋ฅธ ์กฐ๊ฑด๋ค์ ์ ๋ ฌ ๊ธฐ์ค ์ฌ์ ์์ ๋ฐ๋ผ์
if(o1.korean < o2.korean) {
return 1;
}
๋ง ์ํํ๋ฉด ๋๋๋ฐ, 4๋ฒ ์กฐ๊ฑด์ ์๋ฌธ์ 26๊ฐ, ๋๋ฌธ์ 26๊ฐ ์ด 50๊ฐ๊ฐ ๋๋ ์กฐ๊ฑด์ ์ ์ด์ผ ํ๋ค.
์ด ๋ฐฉ๋ฒ์ String.valueOf() ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๊ฐ๊ฐ์ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, ๋๋ฌด ๋นํจ์จ์ ์ด๋ค.
๊ทธ๋์ ๋ฌธ์์ด ์์ฒด๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ธ String.compareTo() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
return o1.name.compareTo(o2.name)
์ ๋ต ์ฝ๋
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Student[] students = new Student[n];
for (int i = 0; i < n; i++) {
String[] score = br.readLine().split(" ");
students[i] = new Student(
score[0],
Integer.parseInt(score[1]),
Integer.parseInt(score[2]),
Integer.parseInt(score[3]));
}
Comparator<Student> myComparator = new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if(o1.korean < o2.korean) {
return 1;
}else if(o1.korean == o2.korean) {
if(o1.english > o2.english) {
return 1;
}else if(o1.english == o2.english) {
if(o1.math < o2.math) {
return 1;
}else if (o1.math == o2.math) {
return o1.name.compareTo(o2.name);
}
}
}
return -1;
}
};
Arrays.sort(students, myComparator);
for (int i = 0; i < n; i++) {
bw.write(students[i].name + "\n");
}
bw.flush();
bw.close();
}
}
class Student {
String name;
int korean;
int english;
int math;
Student(String name, int korean, int english, int math) {
this.name = name;
this.korean = korean;
this.english = english;
this.math = math;
}
}
๋ฌธ์ ํ๊ณ
๋ฌธ์์ด ์์ฒด๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ String.compareTo() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
ํ์ง๋ง ํน์ ๋ฌธ์์ด๋ง ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด compare() ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ๋ฉฐ String.charAt() ์ผ๋ก ์ ํํ์ฌ ๋ฐ๋ก ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์๋ค.
๋๊ธ