본문 바로가기

OJ

[BOJ] 10814 나이순 정렬 (JAVA)

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

나이순으로 정렬하되, 나이가 같으면 입력받은 순서대로 출력하면 됩니다.

입력받은 순서를 기억하기 위해서 각 입력마다 index를 부여했습니다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
	
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();
    static StringTokenizer st;

    public static void main(String[] args) throws Exception {

        int N = Integer.parseInt(br.readLine());
        PriorityQueue<Member> pq = new PriorityQueue<>();
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            pq.offer(new Member(Integer.parseInt(st.nextToken()), st.nextToken(), i));
        }

        while(!pq.isEmpty()) {
            Member m = pq.poll();
            sb.append(m.age + " " + m.name + "\n");
        }
        System.out.print(sb.toString());

    }

    static class Member implements Comparable<Member> {

        int age, index;
        String name;

        public Member(int age, String name, int index) {
            this.age = age;
            this.name = name;
            this.index = index;
        }

        @Override
        public int compareTo(Member o) {
            if(this.age == o.age) return this.index - o.index;
            return this.age - o.age;
        }

    }

}

'OJ' 카테고리의 다른 글

[BOJ] 27211 도넛 행성 (JAVA)  (0) 2023.01.20
[BOJ] 4963 섬의 개수 (JAVA)  (0) 2023.01.19
[BOJ] 11650 좌표 정렬하기 (JAVA)  (0) 2023.01.17
[BOJ] 14923 미로 탈출 (JAVA)  (0) 2023.01.16
[BOJ] 10845 큐 (JAVA)  (0) 2023.01.15