카테고리: 정렬
https://www.acmicpc.net/problem/10814
회원들을 담을 클래스를 만든 후 클래스 배열을 정렬합니다. 클래스를 직접 기준으로 정렬하는 방법은 두가지 입니다.
1번 풀이 방식의 코드입니다.
import java.io.*;
import java.sql.SQLOutput;
import java.util.*;
class Main {
static public class Member implements Comparable<Member>{
String name;
int age;
int joinNum;
public Member(String name, int age, int joinNum) {
this.name = name;
this.age = age;
this.joinNum = joinNum;
}
@Override
public int compareTo(Member o) {
if(age == o.age){
return joinNum - o.joinNum;
}
return age - o.age;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
List<Member> list = new ArrayList<>();
for(int i=0; i < n; i++){
st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
list.add(new Member(name, age, i));
}
//정렬
Collections.sort(list);
for(Member member : list){
bw.write(member.age+ " "+ member.name+"\n");
}
bw.flush();
bw.close();
}
}
2번 풀이 방식의 코드입니다.
import java.io.*;
import java.util.*;
class Main {
static public class Member{
String name;
int age;
int joinNum;
public Member(String name, int age, int joinNum) {
this.name = name;
this.age = age;
this.joinNum = joinNum;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
Member[] members = new Member[n];
for(int i=0; i < n; i++){
st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
members[i] = new Member(name, age, i);
}
//정렬
Arrays.sort(members, (o1, o2)-> {
if(o1.age == o2.age){
return o1.joinNum - o2.joinNum;
}
return o1.age - o2.age;
});
for(Member member : members){
bw.write(member.age+ " "+ member.name+"\n");
}
bw.flush();
bw.close();
}
}