import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static class Person implements Comparable<Person> {
int index; int age; String name;
public Person(int index, int age, String name){
this.index=index; this.age=age; this.name=name;
}
public int compareTo(Person p){
if(this.age>p.age) return 1;
else if(this.age==p.age)
if(this.index>p.index)
return 1;
return -1;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
Person[] person = new Person[n];
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
person[i] = new Person(i, Integer.parseInt(st.nextToken()), st.nextToken());
}
Arrays.sort(person);
for(int i=0; i<n; i++){
sb.append(person[i].age+" "+person[i].name).append('\n');
}
System.out.print(sb);
br.close();
}
}
정렬 기준은 다음의 두 가지이다.
1. 나이 증가 순으로
2. 나이 같으면 먼저 가입한 순으로
위의 기준을 만족하기 위해서,
입력받는 나이와 이름 외에도 인덱스(입력받는 순이 가입한 순이므로)를 함께 Person 클래스를 이용해 저장했다.
Comparable 인터페이스를 통해 compareTo()메소드로 age와 index를 모두 오름차순으로 정렬했고,
Arrays.sort(person) 을 통해 구현했다.
'1d-1c > BOJ' 카테고리의 다른 글
1932_정수 삼각형 (JAVA) (0) | 2020.12.18 |
---|---|
14889_스타트와 링크 (JAVA) (0) | 2020.12.15 |
1181_단어 정렬 (JAVA) (0) | 2020.12.04 |
11650_좌표 정렬하기 (JAVA) (0) | 2020.12.04 |
1427_소트인사이드 (JAVA) (0) | 2020.12.04 |