์ด์ , ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ๋๋ค์์ ์ฌ์ฉํด์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ํฐ๋ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ , ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ํ๋๋ง๋ค StringBuilder๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅํ๋ ๊ฒ์ ์์ฒญ๋ ํจ๊ณผ๋ฅผ ๋๋ผ๋ ๊ฒ ๊ฐ๋ค.
์ฌ๋งํ๋ฉด StringBuilder๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅํด์ผ๊ฒ ๋ค. ใ ใ
for each๋ฌธ์ ์ฌ์ฉํด์ println ํ๋ ๋ฐฉ๋ฒ๊ณผ StringBuilder์ ์์๋๊ณ ํ๋ฒ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ ์๋๊ฐ ๊ฑฐ์ 2๋ฐฐ ์ฐจ์ด ๋๋ค...ใ ใ
์๋ฌดํผ
์ด ๋ฌธ์ ์ ํคํฌ์ธํธ๋
๊ตญ์ด ์ ์๋ ๊ฐ์ํ๋ ์์, ์์ด ์ ์๋ ์ฆ๊ฐํ๋ ์์, ์ํ ์ ์๋ ๊ฐ์ํ๋ ์์, ์ด๋ฆ์ ์ฆ๊ฐํ๋ ์์
์์ ํ์ ํ๊ณ ์ด์ ๋ง๋ return ๊ฐ์ ๊ฑด๋ค์ฃผ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก ์ด๋ฆ์ String ์ด๋ฏ๋ก, compareTo() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ฆฌํด ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ์ ๊ฒ์๊ธ์ ๋ณด๊ณ ์์ ๋ฅผ ๋ช๊ฐ ๋ง๋ค์ด ๋ณด๋ฉด ๋ฐ๋ก ์ต์ํด ์ง ๊ฒ์ด๋ค.
DP ๋ฅผ ๋๋ด๊ณ ์ ๋ ฌ ๋ฌธ์ ๋ก ๋์ด์์ ๋, ์ด๋ ต์ง ์์๊น ๊ฑฑ์ ํ์๋๋ฐ, ๋คํํ ๊ฑฑ์ ํ๋ ๊ฒ ๋งํผ ์ด๋ ต์ง ์๊ณ ์ ์ ํ๋ ค์ ๋คํ์ด๋ค. ใ ใ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
//1. ๊ตญ์ด ์ ์๊ฐ ๊ฐ์ํ๋ ์์๋ก
//2. ๊ตญ์ด ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์์ด ์ ์๊ฐ ์ฆ๊ฐํ๋ ์์๋ก
//3. ๊ตญ์ด ์ ์์ ์์ด ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์ํ ์ ์๊ฐ ๊ฐ์ํ๋ ์์๋ก
//4. ๋ชจ๋ ์ ์๊ฐ ๊ฐ์ผ๋ฉด ์ด๋ฆ์ด ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก(๋๋ฌธ์๋ ์๋ฌธ์ ๋ณด๋ค ์์)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.valueOf(br.readLine());
StringBuilder sb = new StringBuilder();
//์ ์ ์์ ๊ตญ ์ ์
List<Student> gradeList = new ArrayList<>();
for (int i = 1; i <= N; i++) {
String[] input = br.readLine().split(" ");
String name = input[0];
int kor = Integer.valueOf(input[1]);
int eng = Integer.valueOf(input[2]);
int math = Integer.valueOf(input[3]);
gradeList.add(new Student(name, kor, eng, math));
}
Collections.sort(gradeList,(l1,l2)->{
if (l1.kor == l2.kor) {
if (l1.eng == l2.eng) {
if (l1.math == l2.math) {
return l1.name.compareTo(l2.name); //String ์ ๋ ฌ
}
return l2.math - l1.math; //์ํ์ ๊ฐ์ํ๋ ์์
}
return l1.eng - l2.eng; //์์ด๋ ์ฆ๊ฐํ๋ ์์
}
return l2.kor - l1.kor;//๊ตญ์ด๋ ๊ฐ์ํ๋ ์์
}
);
for (Student student : gradeList) {
sb.append(student + "\n");
}
System.out.println(sb);
}
}
class Student{
String name;
int kor,eng, math;
public Student(String name, int kor, int eng, int math) {
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
@Override
public String toString() {
return name;
}
}