반응형
백준 10814번 문제 - 나이순 정렬
문제 분석
- 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬해서 출력해라
해결 키 포인트
- 클래스(Member) 생성
- 나이 (age)
- 이름 (name)
- 순서 (index)
- 클래스가 implements Comparable<Member> 하도록 한다.
- 정렬 방법: 나이가 작은 순, 나이가 동일할 경우 입력된 순서 순으로 !
- 출력을 쉽게하기 위해 Member의 toString을 override하기
코드
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Member [] members = new Member[N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
members[i] = new Member(age, name, i);
}
Arrays.sort(members);
for (int i = 0; i < N; i++) {
System.out.println(members[i]);
}
}
public static class Member implements Comparable<Member> {
int age;
String name;
int index;
public Member(int age, String name, int index) {
this.age = age;
this.name = name;
this.index = index;
}
@Override
public String toString() {
return age + " " + name;
}
@Override
public int compareTo(Member m) {
if(age == m.age) {
return index - m.index;
}
return age - m.age;
}
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 11866] 요세푸스 문제 (JAVA) (2) | 2023.11.30 |
---|---|
[백준 11650] 좌표 정렬하기 (JAVA) (0) | 2023.11.30 |
[백준 1181] 단어 정렬 (JAVA) (0) | 2023.11.30 |
[백준 1966] 프린터 큐 (JAVA) (0) | 2023.11.30 |
[백준 2108] 통계학 (JAVA) (1) | 2023.11.30 |