본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 10814 나이순 정렬

by 까망 하르방 2021. 2. 22.
반응형

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

 Input 

3

21 Junkyu

21 Dohyun

20 Sunyoung

 

 Output 

20 Sunyoung

21 Junkyu

21 Dohyun

회원을 나이 순, 나이가 같으면 가입한 순 정렬하는 문제입니다.

우선순위 큐를 이용하여 처리.


import java.util.PriorityQueue;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = Integer.parseInt(sc.next());
         
        PriorityQueue<Member> pq = new PriorityQueue<>();
        for(int idx=1; idx<=N; idx++) {
            pq.add(new Member(
                    // 나이
                    Integer.parseInt(sc.next()),
                    // 이름
                    sc.next(),
                    // 가입 순서
                    idx
            ));
        }
         
        while (!pq.isEmpty())
            System.out.println(pq.poll());
    }
}
 
class Member implements Comparable<Member>{
    String name;
    int age;
    int regDate; // 가입 순서
     
    public Member(int age, String name, int regDate) {
        this.age = age;
        this.name = name;
        this.regDate = regDate;
    }
     
    @Override
    public int compareTo(Member target) {
        // 상대방 나이가 적을수록 우선순위를 갖도록
        if(this.age < target.age) return -1;
        else if (this.age > target.age) return 1;
        // 나이가 동일한 경우 가입 순서로 구분
        else return this.regDate >= target.regDate ? 1 : -1;
    }
 
    @Override
    public String toString() {
        // 정답형태로 변형
        return age + " " + name;
    }
}

 

반응형

댓글