728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Data Structures > Java Sort
ID, FirstName 및 CGPA와 같은 학생 정보 목록이 제공됩니다. 당신의 임무는 CGPA에 따라 내림차순으로 그것들을 재배열하는 것입니다. 두 학생의 CGPA가 같으면 이름에 따라 알파벳 순서로 정렬합니다. 두 학생의 이름도 같으면 ID에 따라 순서를 지정합니다. 두 명의 학생이 동일한 ID를 가지고 있지 않습니다.
Hint: comparators를 사용하여 개체 목록을 정렬할 수 있습니다. comparators에 대해 알아보려면 Oracle 문서를 참조하세요.
Input Format
입력의 첫 번째 줄에는 총 학생 수를 나타내는 정수 N이 포함됩니다. 다음 N 줄에는 다음 구조의 학생 정보 목록이 포함되어 있습니다.
ID Name CGPA
Constraints
- 2 ≤ N ≤ 1000
- 0 ≤ ID ≤ 100000
- 5 ≤ |NAME| ≤ 30
- 0 ≤ CGPA ≤ 4.00
이름에는 영문 소문자만 포함됩니다. ID에는 선행 0이 없는 정수만 포함됩니다. CGPA는 소수점 이하 2자리 이하를 포함합니다.
Output Format
위의 규칙에 따라 학생들을 재배열한 후 각 학생의 이름을 별도의 줄에 출력합니다.
Sample Input
5
33 Rumpa 3.68
85 Ashis 3.85
56 Samiha 3.75
19 Samara 3.75
22 Fahim 3.76
Sample Output
Ashis
Fahim
Samara
Samiha
Rumpa
Code
import java.util.*;
class Student{
private int id;
private String fname;
private double cgpa;
public Student(int id, String fname, double cgpa) {
super();
this.id = id;
this.fname = fname;
this.cgpa = cgpa;
}
public int getId() {
return id;
}
public String getFname() {
return fname;
}
public double getCgpa() {
return cgpa;
}
}
//Complete the code
public class Solution
{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int testCases = Integer.parseInt(in.nextLine());
List<Student> studentList = new ArrayList<Student>();
while(testCases>0){
int id = in.nextInt();
String fname = in.next();
double cgpa = in.nextDouble();
Student st = new Student(id, fname, cgpa);
studentList.add(st);
testCases--;
}
studentList.sort(new Comparator<Student>() {
public int compare(Student s1, Student s2) {
int c;
c = Double.valueOf(s1.getCgpa()).compareTo(s2.getCgpa());
if( c != 0 ) return -c;
c = s1.getFname().compareTo(s2.getFname());
if( c != 0 ) return c;
return Integer.valueOf(s1.getId()).compareTo(s2.getId());
}
});
for(Student st: studentList){
System.out.println(st.getFname());
}
}
}
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java BitSet (0) | 2023.10.18 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java Dequeue (0) | 2023.10.17 |
[해커랭크(HackerRank) JAVA 풀이] - Java Comparator (0) | 2023.10.13 |
[해커랭크(HackerRank) JAVA 풀이] - Java Generics (0) | 2023.10.12 |
[해커랭크(HackerRank) JAVA 풀이] - Java Hashset (1) | 2023.10.11 |