String[][] 이중배열을 이용해서 Array.sort 하는 방법
// String[][] 사용한 풀이
public static void main0(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String[][] arr = new String[N][2];
for(int i = 0; i < N; i++) {
arr[i][0] = sc.next(); // 나이
arr[i][1] = sc.next(); // 이름
}
Arrays.sort(arr, new Comparator<String[]>() {
// 나이순으로 정렬
@Override
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
}
});
for(int i = 0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
Member 객체를 선언 후 사용
public void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Member[] members = new Member[n];
for (int i = 0; i < n; i++) {
int age = sc.nextInt();
String name = sc.next();
members[i] = new Member(age, name);
}
Arrays.sort(members, new Comparator<Member>() {
@Override
public int compare(Member m1, Member m2) {
return Integer.compare(m1.getAge(), m2.getAge());
}
});
for (Member member : members) {
System.out.println(member.getAge() + " " + member.getName());
}
}
}
class Member {
private int age;
private String name;
public Member(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
}
느낀 점 : 예쁜 풀이는 힘들다. 그러나 자바로 알고리즘 푸는 이유가 있어야 할 듯. 최대한 객체 지향, 기능별로 조그맣게 나눠서 풀자