티스토리 뷰
728x90
문제
- 가입한 사람들의 나이와 이름이 가입한 순서대로 주어짐
- 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬
해결방법
Comparable 인터페이스를 상속받아 compareTo 메소드를 Override하여 비교할 수 있도록하여 정렬하였다. age와 name을 모두 담을 수 있는 Person 클래스를 만들어 compareTo 메소드를 Override하여 나이 순으로 비교할 수 있도록 하였다. 그 후 입력받은 사람들의 데이터를 Arrays.sort()를 이용하여 정렬한 뒤 출력하였다.
코드
import java.io.*;
import java.util.*;
class Main{
public static class Person implements Comparable<Person>{
int age;
String name;
Person(int age, String name){
this.age = age;
this.name = name;
}
// 나이로 비교할 수 있도록 compareTo 메소드 Override
@Override
public int compareTo(Person o) {
return this.age - o.age;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Person[] person = new Person[N];
for(int i = 0; i<N; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
person[i] = new Person(Integer.parseInt(st.nextToken()), st.nextToken());
}
Arrays.sort(person); // person 배열 정렬
for(int i = 0; i<N; i++){
System.out.println(person[i].age + " " + person[i].name);
}
br.close();
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 10828번 스택(JAVA) (1) | 2022.07.28 |
---|---|
[백준] 10816번 숫자 카드 2(JAVA) (0) | 2022.07.28 |
[백준] 10773번 제로(JAVA) (0) | 2022.07.25 |
[백준] 10250번 ACM 호텔(JAVA) (0) | 2022.07.24 |
[백준] 9012번 괄호(JAVA) (0) | 2022.07.22 |
댓글