문제에 대한 자세한 정보는 백준 | 10814번 : 나이순 정렬에서 확인할 수 있다.
여러가지 풀이방법이 있다.
class, 객체 사용
String 2차원 배열 사용
class, 객체 사용
import java.io.*;
import java.util.*;
class User implements Comparable<User> {
int age;
String name;
public User(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public int compareTo(User o) {
return this.age - o.age;
}
@Override
public String toString() {
return this.age + " " + this.name + "\n";
}
}
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.valueOf(br.readLine());
User[] user = new User[n];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
user[i] = new User(Integer.valueOf(st.nextToken()), st.nextToken());
}
Arrays.sort(user);
for (int i = 0; i < n; i++) {
bw.write(user[i].toString());
}
br.close();
bw.close();
}
}
String 2차원 배열 사용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.valueOf(br.readLine());
String[][] user = new String[n][2];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
user[i][0] = st.nextToken();
user[i][1] = st.nextToken();
}
Arrays.sort(user, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
// TODO Auto-generated method stub
return Integer.valueOf(o1[0]) - Integer.valueOf(o2[0]);
}
});
for (int i = 0; i < n; i++) {
bw.write(user[i][0] + " " + user[i][1] + "\n");
}
br.close();
bw.close();
}
}
class, 객체 사용
메모리 : 54380KB
시간 : 632ms
String 2차원 배열 사용
메모리 : 65096KB
시간 : 840ms
위에 작성한 방법말고도 나이는 어차피 200보다 작거나 같은 정수이므로 StringBuilder를 사용해서 2751번 : 수 정렬하기 2와 같은 방법으로 index를 사용해 풀어도 됐었다. 거기까지 생각을 못했다. 문제를 풀기 전에 더 효율적인 풀이 방법은 없는지 더 생각하는 습관을 길러야겠다.