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