문제
풀이
- 키와 몸무게에서 키를 기준으로 정렬한다.
- 키나 몸무게가 제일 크면 무조건 선발되므로 첫번째 선수는 선발된다.
- 몸무게 최대 값 변수를 만들고 순서대로 몸무게 최대 값이 갱신될 때마다 선발 선수가 늘어난다.
- 왜냐하면 뒤로 갈수록 키는 작아지는데 몸무게가 더 크므로 선발 대상이기 때문이다.
잡담
- 좌표 정렬의 Comparable를 상속해서 써도 되는지 모르겠다. 얼마 전 롯데 인턴 코테를 봤을 때 IDE를 사용할 수 없고 검색도 안되서 저런게 나오면 외워야하는 건지 애매하다.
전체 코드
package inflearn;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class I0901 {
static int n;
static ArrayList<Info> arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
int h = sc.nextInt();
int w = sc.nextInt();
arr.add(new Info(h, w));
}
System.out.println(sol(arr));
}
static int sol(ArrayList<Info> arr) {
int ans = 0;
Collections.sort(arr);
int max = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
if (arr.get(i).weight > max) {
ans++;
max = arr.get(i).weight;
}
}
return ans;
}
static class Info implements Comparable<Info> {
int height, weight;
public Info(int height, int weight) {
this.height = height;
this.weight = weight;
}
@Override
public int compareTo(Info o) {
return o.height - this.height;
}
}
}