Java - 문제 미리보기
문제 2410
medium
다음 코드의 실행 결과는?
```java
class Person implements Comparable<Person> {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public int compareTo(Person other) {
return other.age - this.age; // 주목: other - this
}
}
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Carol", 20)
);
Collections.sort(people);
```
정렬 후 순서는?
```java
class Person implements Comparable<Person> {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public int compareTo(Person other) {
return other.age - this.age; // 주목: other - this
}
}
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Carol", 20)
);
Collections.sort(people);
```
정렬 후 순서는?
정답: B
이 문제의 핵심은 `compareTo()` 메서드에서 `other.age - this.age` 순서로 빼기 연산을 했다는 점입니다.
정렬 방향 결정 원리:
일반적인 오름차순 (this - other):
```java
public int compareTo(Person other) {
return this.age - other.age;
// this가 작으면 음수 → this가 앞에 (오름차순)
}
```
역순 정렬 (other - this):
```java
public int compareTo(Person other) {
return other.age - this.age;
// other가 작으면 음수 → other가 앞에 (내림차순)
}
```
💡 학습 팁
이 문제를 포함한 Java 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.