[이것이 코딩 테스트다 with Python] 성적이 낮은 순서로 학생 출력하기(Java)
Goal
“이것이 코딩 테스트다 with Python” 교재의 문제를 분석하고 코드와 함께 이해해보기 위한 글입니다.
문제 분석
정렬하는 방법이 여러가지 있겠지만, 점수와 이름을 갖는 학생을 Comparable한 클래스로 구현해 내장메서드 Collections.sort()
로 정렬할 수 있습니다.
코드 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class PrintInLowerGradeOrder { //p180
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
List<Student> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
list.add(new Student(st.nextToken(), Integer.parseInt(st.nextToken())));
}
Collections.sort(list);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
for (Student s : list) {
sb.append(s.getName()).append(" ");
}
bw.write(sb.toString());
br.close();
bw.close();
}
private static class Student implements Comparable<Student>{
String name;
int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
private String getName() {
return name;
}
@Override
public int compareTo(Student o) {
return this.grade - o.grade;
}
}
}
This post is licensed under CC BY 4.0 by the author.