
-Code
import java.io.*;
import java.util.*;
class Main {
static class Matter {
double weight, volume;
int idx;
public Matter (double weight, double volume, int idx) {
this.weight = weight;
this.volume = volume;
this.idx = idx;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// 배열로 받기
Matter[] matters = new Matter[n];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
double w = Double.parseDouble(st.nextToken());
double v = Double.parseDouble(st.nextToken());
matters[i] = new Matter(w, v, i + 1);
}
// 정렬
Arrays.sort(matters, (o1, o2) -> {
double oDen1 = o1.weight / o1.volume;
double oDen2 = o2.weight / o2.volume;
// 밀도가 같은 경우
if (oDen1 == oDen2) {
// 무게가 같은 경우
if (o1.weight == o2.weight) {
// 인덱스의 역순으로 정렬
return o2.idx - o1.idx;
}
// 무게 오름차순 정렬
return Double.compare(o1.weight, o2.weight);
}
// 밀도 오름차순 정렬
return Double.compare(oDen1, oDen2);
});
// 결과 출력
System.out.println(matters[n - 1].idx);
}
}'알고리즘 문제 > Java' 카테고리의 다른 글
| [goormlevel/Java] Stack (0) | 2026.06.03 |
|---|---|
| [goormlevel/Java] 연속 점수 (0) | 2026.06.02 |
| [goormlevel/Java] Queue (0) | 2026.05.31 |
| [goormlevel/Java] M배 배열 (0) | 2026.05.30 |
| [goormlevel/Java] 0 채우기 (0) | 2026.05.29 |