사용 언어: Java
- 구상
- 1번째 구현 (시간초과)
import java.util.*;
import java.io.*;
public class Main {
public static String[][] user; // 나이-이름 저장 배열
public static int num; // 배열의 크기
// 교환하기
public static void swap(String[][] arr, int i, int j) {
String[] temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) throws Exception {
Scanner s = new Scanner(System.in);
num = s.nextInt();
user = new String[num][2];
// 문자열로 입력 받기
for(int i = 0; i < num; i++) {
user[i][0] = s.next();
user[i][1] = s.next();
}
// bubble-sort로 정렬
for (int i = num - 1; i >= 0; --i) {
for (int j = 0; j < i; j++) {
//문자열인 나이를 정수로 전환
int num1 = Integer.parseInt(user[j][0]);
int num2 = Integer.parseInt(user[j+1][0]);
if(num1 > num2)
swap(user, j, j+1);
}
}
// 출력
for(int i = 0; i < num; i++)
System.out.println(user[i][0] + " " + user[i][1]);
}
}
bubble-sort로 구현하였으나 또 시간초과.
문자열인 나이 부분을 정수로 바꿔서 비교함.
- 2번째 구현
import java.util.*;
import java.io.*;
public class Main {
public static String[][] user;
public static int num;
public static void main(String[] args) throws Exception {
Scanner s = new Scanner(System.in);
num = s.nextInt();
user = new String[num][2];
for(int i = 0; i < num; i++) {
user[i][0] = s.next();
user[i][1] = s.next();
}
// 배열 정렬 기본 메소드 이용
Arrays.sort(user, new Comparator<String[]>() {
// 나이순으로 정렬
// compare 메소드 재정의
@Override
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
}
});
for(int i = 0; i < num; i++)
System.out.println(user[i][0] + " " + user[i][1]);
}
}
객체를 비교하는 Comparator의 compare을 재정의함.
문자열인 나이를 정수로 전환하여 비교.