ALGORITHM

[JAVA] 백준 10814번- 나이순 정렬

연듀 2022. 9. 29. 10:28

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

class Member implements Comparable<Member>{
    int id, age;
    String name;

    public Member(int id, int age, String name){
        this.id = id;
        this.age = age;
        this.name = name;
    }
    @Override
    public int compareTo(Member o) {
        if(this.age == o.age){// 나이가 같으면
            return this.id - o.id;  // 먼저 가입한 순으로 오름차순
        }
        return this.age-o.age; // 나이 오름차순
    }
}
public class Main{

    // 나이가 증가하는 순으로
    // 나이가 같으면 먼저 가입한 사람이 앞에 오는 순으로
    // 입력은 가입 한 순으로
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int n = Integer.parseInt(br.readLine());

        ArrayList<Member> members = new ArrayList<Member>();

        for(int i=1; i<=n; i++){
            st = new StringTokenizer(br.readLine());
            int age = Integer.parseInt(st.nextToken());
            String name = st.nextToken();

            members.add(new Member(i, age, name));
        }
        Collections.sort(members);

        for(Member m : members){
            System.out.println(m.age+" "+m.name);
        }
    }
}