백준 10814 - 나이순 정렬
Updated:
Java
10814 번 - 나이순 정렬
문제
접근 방법
정렬 문제이다.
총 2가지 방식으로 풀었다.
- Class의 Comparable을 이용
- String[] 이용
코드
Comparable
import java.util.*;
import java.io.*;
public class Main {
static int n, result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
n = stoi(br.readLine());
List<Info> infoList = new ArrayList<>();
Info info;
for(int i = 0; i < n; i++) {
stk = new StringTokenizer(br.readLine());
info = new Info(stoi(stk.nextToken()), stk.nextToken());
infoList.add(info);
}
Collections.sort(infoList);
StringBuilder sb = new StringBuilder();
for(Info in : infoList) {
sb.append(in.age).append(" ").append(in.name).append("\n");
}
System.out.println(sb.toString());
br.close();
}
static class Info implements Comparable<Info>{
int age;
String name;
public Info(int age, String name) {
super();
this.age = age;
this.name = name;
}
@Override
public int compareTo(Info o) {
return Integer.compare(age, o.age);
}
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}
String[][] 배열로 비교
String[][] infoArr = new String[n][3];
for(int i = 0; i < n; i++) {
stk = new StringTokenizer(br.readLine());
infoArr[i][0] = stk.nextToken(); // 나이, int
infoArr[i][1] = stk.nextToken(); // 이름, String
}
Arrays.sort(infoArr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return stoi(o1[0]) - stoi(o2[0]); // 나이 순으로 비교
}
});
Class + Array
Info[] infoList = new Info[n];
Info info;
for(int i = 0; i < n; i++) {
stk = new StringTokenizer(br.readLine());
info = new Info(stoi(stk.nextToken()), stk.nextToken());
infoList[i] = info;
}
Arrays.sort(infoList, new Comparator<Info>() {
@Override
public int compare(Info o1, Info o2) {
return Integer.compare(o1.age, o2.age);
}
});