반응형
출처: 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;
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 17070 파이프 옮기기 1 (0) | 2021.02.22 |
---|---|
[BOJ] 백준 17136 색종이 붙이기 (0) | 2021.02.22 |
[BOJ] 백준 1708 블록 껍질 (0) | 2021.02.22 |
[BOJ] 백준 17135 캐슬 디펜스 (0) | 2021.02.22 |
[BOJ] 백준 4355 서로소 (0) | 2021.02.22 |
댓글