문제
Solved.ac CLASS2+
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
LinkedList<User> users = new LinkedList<>();
for (int i = 0; i <size; i++) {
String[] readline = br.readLine().split(" ");
int age = Integer.parseInt(readline[0]);
String name = readline[1];
users.add(new User(age, name));
}
users.sort(new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
if (u1.age - u2.age == 0) {
return 1;
}
return u1.age - u2.age;
}
});
StringBuilder sb = new StringBuilder();
for (User user : users) {
sb.append(user.print());
}
System.out.println(sb);
}
public static class User{
int age;
String name;
public User(int age, String name) {
this.age = age;
this.name = name;
}
public String print() {
return age + " " + name + "\n";
}
}
}
객체를 만들고 Comparator를 구현하여 비교하였다, 예제는 통과했으나 런타임 에러를 뱉으며 터졌다
실패
여러번 뭘 바꿔도 같은 오류를 뿜어 comparator문제인가 싶어 if문을 없애보았다. 논리적으로 봤을때 없어도 된다.
그리고 print매소드를 toString
을 Override
하는 형태로 변경하였다.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
LinkedList<User> users = new LinkedList<>();
for (int i = 0; i <size; i++) {
String[] readline = br.readLine().split(" ");
int age = Integer.parseInt(readline[0]);
String name = readline[1];
users.add(new User(age, name));
}
users.sort(new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
return u1.age - u2.age;
}
});
StringBuilder sb = new StringBuilder();
for (User user : users) {
sb.append(user.toString());
}
System.out.println(sb);
}
public static class User{
int age;
String name;
public User(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return age + " " + name + "\n";
}
}
}
성공