이것이 취업을 위한 코딩 테스트다. with 파이썬 - 나동빈
Java
public class LowGradeStudent {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
HashMap<Integer, String> student = new LinkedHashMap<>();
for(int i = 0; i < N; i++) {
String[] s = br.readLine().split(" ");
student.put(Integer.parseInt(s[1]), s[0]);
}
List<Integer> scores = student.keySet().stream().sorted().collect(Collectors.toList());
for(int i = 0; i < scores.size(); i++) {
System.out.print(student.get(scores.get(i)) + " ");
}
}
}
Python
N = int(input())
arr = []
for i in range(N):
arr.append(tuple(input().split()))
def setting(data):
return data[1]
arr = sorted(arr, key=setting)
for i in range(len(arr)):
print(arr[i][0], end=" ")
자바 풀이를 보니 Student 객체를 만들어 compareTo 를 오버라이딩 하여 성적순으로 정렬하였다. 객체지향적이라서 보기 좋았다. 파이썬 코드는 파이썬의 람다로 접근하였는데, 람다는 아직 잘 몰라서 그냥 책에 나온 방식으로 접근했다.
class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student o) {
return this.score - o.score;
}
}
public class LowGradeStudent {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
List<Student> arr = new ArrayList<>();
for(int i = 0; i < N; i++) {
String[] s = br.readLine().split(" ");
arr.add(new Student(s[0], Integer.parseInt(s[1])));
}
Collections.sort(arr);
for(int i = 0; i < arr.size(); i++) {
System.out.print(arr.get(i).getName() + " ");
}
}
}