CS/Algorithm
[ JAVA / 백준 : 10814 ] 나이순 정렬
yujindonut
2021. 8. 8. 02:18
728x90
조건
1. 나이순으로 오름차순 정렬
2. 나이가 같을 경우, 등록된 index번호에 따라서
푼 방법
int변수와 String을 한꺼번에 묶을 수 있는 Person 클래스 생성
비교를 위해서 implements Comparable<Person> 해주었다. 필수적으로 생성자와 compareTo메소드를 생성해줘야함.
Person객체 안에는 index번호를 저장할 수 있는 num, 나이 , 이름을 저장해주었다.
compareTo메소드 안에서 나이가 같으면, index 번호에 따라서 오름차순으로 정렬해주도록 하였다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
static class Person implements Comparable<Person> {
int num;
int age;
String name;
public Person(int num, int age, String name) {
this.num = num;
this.age = age;
this.name = name;
}
@Override
public int compareTo(Person o) {
if(this.age == o.age) {
return this.num - o.num;
}
return this.age - o.age;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N;
N = scan.nextInt();
ArrayList<Person> p = new ArrayList<>();
for(int i = 0; i < N; i++) {
int age = scan.nextInt();
String name = scan.next();
p.add(new Person(i, age, name));
}
Collections.sort(p);
for(int i = 0; i < N; i++) {
if(p.get(i) != null) {
System.out.println(p.get(i).age + " " + p.get(i).name);
}
}
scan.close();
}
}
방금전에 좌표정렬하기를 풀어서 그런지 비슷한 문제였던 것 같다!
728x90