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);
```
정렬 후 순서는?
A. Carol(20) → Alice(25) → Bob(30)
B. Bob(30) → Alice(25) → Carol(20)
C. Alice(25) → Bob(30) → Carol(20)
D. 컴파일 에러

정답: 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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.