https://www.acmicpc.net/problem/11000
arraylist로 하려고 했지만 너무 복잡해서
=> 우선순위 큐로 변경
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
static int n;
static int[][] c;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
c = new int[n][2];
for(int i=0;i<n;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
c[i][0] = Integer.parseInt(st.nextToken());
c[i][1] = Integer.parseInt(st.nextToken());
}
// 정렬 -> arraylist에 넣고 존재하는 값이면 값 바꾸고 없으면 값 추가하기
Arrays.sort(c, (a,b)->a[1]==b[1]? Integer.compare(b[0],a[0]):Integer.compare(b[1],a[1]));
PriorityQueue<Integer> room = new PriorityQueue<>();
room.add(c[n-1][0]);
for(int i=n-2;i>=0;i--){
if(c[i][1]<=room.peek()){
room.poll();
room.add(c[i][1]);
} else{
room.add(c[i][0]);
}
}
System.out.println(room.size());
}
}
=>
뒤에서 부터가 아니라 앞에서 부터로 변경
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
static int n;
static int[][] c;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
c = new int[n][2];
for(int i=0;i<n;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
c[i][0] = Integer.parseInt(st.nextToken());
c[i][1] = Integer.parseInt(st.nextToken());
}
// 정렬 -> arraylist에 넣고 존재하는 값이면 값 바꾸고 없으면 값 추가하기
Arrays.sort(c, (a,b)->a[0]==b[0]? a[1]-b[1]:a[0]-b[0]);
PriorityQueue<Integer> room = new PriorityQueue<>();
room.add(c[0][1]);
for(int i=1;i<n;i++){
if(c[i][0]>=room.peek()){
room.poll();
room.add(c[i][1]);
} else{
room.add(c[i][1]);
}
}
System.out.println(room.size());
}
}