https://www.acmicpc.net/problem/1946
서류 등수를 기준으로 정렬하고
정렬한 리스트를 돌면서 면접 최소등수를 가지고 있고
만약 최소등수보다 높으면 통과, 낮으면 탈락으로 판단한다.
students.sort(Comparator.comparingInt(o -> o.first));
서류 등수를 기준으로 오름차순 정렬한다.
int min = N+1;
for (Student student : students) {
if (min > student.second) {
// 최소값 갱신
min = student.second;
ans++;
}
}
1등부터 반복하므로 전에 통과한 면접 등수보다 안되면 탈락이다
면접 등수가 높으면(second 값이 작으면) 합격이고 면접 등수를 저장한다
baekjoon._1946;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
static int T, N;
static StringBuilder sb = new StringBuilder();
public static void input() {
FastReader fr = new FastReader();
T = fr.nextInt();
for (int i = 0; i < T; i++) {
int ans = 0;
N = fr.nextInt();
ArrayList<Student> students = new ArrayList<>();
for (int j = 0; j < N; j++) {
Student stu = new Student(fr.nextInt(), fr.nextInt());
students.add(stu);
}
students.sort(Comparator.comparingInt(o -> o.first));
int min = N+1;
for (Student student : students) {
if (min > student.second) {
// 최소값 갱신
min = student.second;
ans++;
}
}
sb.append(ans);
sb.append("\n");
}
System.out.println(sb);
}
public static void main(String[] args) {
input();
}
static class Student {
int first, second;
public Student(int first, int second) {
this.first = first;
this.second = second;
}
}
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader(){ br = new BufferedReader(new InputStreamReader(System.in));}
String next(){
while(st == null || !st.hasMoreTokens()){
try{
st = new StringTokenizer(br.readLine());
} catch (IOException e){
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() { return Integer.parseInt(next()); }
long nextLong() { return Long.parseLong(next()); }
Double nextDouble() { return Double.parseDouble(next()); }
String nextLine(){
String str = "";
try{
str = br.readLine();
} catch(IOException e){
e.printStackTrace();
}
return str;
}
}
}
처음엔 서류와 면접 둘 다 정렬한 리스트 두개를 이용할려했는데 서류만 정렬해서 풀 수 있는 문제였다.