https://www.acmicpc.net/problem/10814
- 예제 입력1
3
21 Junkyu
21 Dohyun
20 Sunyoung
- 예제 출력1
20 Sunyoung
21 Junkyu
21 Dohyun
- 문제 접근
- 입력
- 회원수 N (1 ≤ N ≤ 10,000)
- N개의 줄만큼 회원의 나이와 이름이 공백으로 가입한 순서대로 입력→ 이름 : 알파벳 대소문자
- → 나이 : 1 ~ 200
- 출력
- 나이 오름 차순
- 나이가 같을 경우 가입 순서
- 한 줄에 한 명씩 나이와 이름을 공백으로 출력
- 입력
- 문제 해결
- 가입한 순서로 정렬도 하기 때문에 입력 받은 순서대로 인덱스가 필요
- 회원 클래스를 생성하여 index, age, name을 매개 변수로 가지고 Comparable을 상속 받아 정렬
- 기존 풀이 [메모리 : 53864 KB / 시간 : 632 ms]
static class Member implements Comparable<Member>{
int index;
int age;
String name;
public Member(int index, int age, String name){
this.index = index;
this.age = age;
this.name = name;
}
@Override
public int compareTo(Member m){
if(this.age == m.age)
return this.index - m.index;
return this.age - m.age;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Member[] members = new Member[N];
for(int i = 0; i < N; i++){
String[] input = br.readLine().split(" ");
members[i] = new Member(i, Integer.parseInt(input[0]), input[1]);
}
Arrays.sort(members);
for(Member m : members)
sb.append(m.age).append(" ").append(m.name).append("\n");
System.out.println(sb);
}
'Coding Test > Step13. 정렬' 카테고리의 다른 글
[Java] 11단계. 좌표 압축 [18870번] (0) | 2024.09.10 |
---|---|
[Java] 9단계. 단어 정렬 [1181번] (1) | 2024.09.10 |
[Java] 8단계. 좌표 정렬하기2 [11651번] (0) | 2024.09.10 |
[Java] 7단계. 좌표 정렬하기 [11650번] (0) | 2024.09.10 |
[Java] 6단계. 소트인사이드 [1427번] (0) | 2024.09.10 |