Skip to content

Commit 0d5dd4d

Browse files
authored
[20251211] BOJ / G5 / 전깃줄 / 한종욱
1 parent a9e1801 commit 0d5dd4d

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
```
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
private static int[][] arr;
9+
private static int[] memo;
10+
private static int N;
11+
12+
public static void main(String[] args) throws IOException {
13+
init();
14+
int maxLen = DP();
15+
16+
bw.write((N-maxLen) + "\n");
17+
bw.flush();
18+
bw.close();
19+
br.close();
20+
}
21+
22+
private static void init() throws IOException {
23+
N = Integer.parseInt(br.readLine());
24+
25+
arr = new int[N][2];
26+
memo = new int[N];
27+
28+
for (int i = 0; i < N; i++) {
29+
StringTokenizer st = new StringTokenizer(br.readLine());
30+
int a = Integer.parseInt(st.nextToken());
31+
int b = Integer.parseInt(st.nextToken());
32+
33+
arr[i][0] = a;
34+
arr[i][1] = b;
35+
}
36+
37+
Arrays.sort(arr, (o1, o2) -> Integer.compare(o1[0], o2[0]));
38+
}
39+
40+
private static int DP() {
41+
int len = 0;
42+
43+
for (int i = 0; i < N; i++) {
44+
int key = arr[i][1];
45+
46+
if (len == 0 || memo[len - 1] < key) {
47+
memo[len] = key;
48+
len++;
49+
} else {
50+
int index = binarySearch(len - 1, key);
51+
memo[index] = key;
52+
}
53+
}
54+
55+
return len;
56+
}
57+
58+
private static int binarySearch(int right, int key) {
59+
int left = 0;
60+
61+
while (left < right) {
62+
int mid = left + (right-left)/2;
63+
64+
if (memo[mid] >= key) {
65+
right = mid;
66+
}
67+
else left = mid+1;
68+
}
69+
70+
return right;
71+
}
72+
}
73+
```

0 commit comments

Comments
 (0)