Skip to content

Commit d64bd92

Browse files
authored
Merge pull request #445 from AlgorithmWithGod/0224LJH
[20250712] BOJ / G5 / 숏코딩의 왕 브실이 / 이종환
2 parents bfaa0bf + 8d3f9d1 commit d64bd92

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
```java
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
8+
public class Main {
9+
static int len,maxRemoveCnt, ans;
10+
static int[] arr,minArr,maxArr;
11+
12+
public static void main(String[] args) throws IOException {
13+
init();
14+
process();
15+
print();
16+
}
17+
18+
private static void init() throws IOException {
19+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
20+
StringTokenizer st = new StringTokenizer(br.readLine());
21+
len = Integer.parseInt(st.nextToken());
22+
maxRemoveCnt = Integer.parseInt(st.nextToken());
23+
arr = new int[len];
24+
ans = Integer.MIN_VALUE;
25+
st = new StringTokenizer(br.readLine());
26+
for (int i = 0; i < len; i++) {
27+
arr[i] = Integer.parseInt(st.nextToken());
28+
}
29+
30+
}
31+
32+
private static void process() {
33+
getMinAndMaxArr();
34+
for (int i = 0; i <= maxRemoveCnt; i++) {
35+
int end = (len-1) - i;
36+
int start = maxRemoveCnt - i;
37+
38+
ans = Math.max(maxArr[end] - arr[start], ans);
39+
}
40+
}
41+
42+
private static void getMinAndMaxArr() {
43+
minArr = new int[len]; // 0~i번까지의 숫자중 최솟값
44+
maxArr = new int[len]; // len-1 ~ len-1-i번까지의 숫자 중 최댓값
45+
46+
minArr[0] = arr[0];
47+
for (int i = 1; i < len; i++) {
48+
minArr[i] = Math.min(minArr[i-1], arr[i]);
49+
}
50+
maxArr[len-1] = arr[len-1];
51+
for (int i = len-2; i >= 0; i--) {
52+
maxArr[i] = Math.max(maxArr[i+1], arr[i]);
53+
}
54+
}
55+
56+
private static void print() {
57+
System.out.println(ans);
58+
}
59+
60+
61+
62+
}
63+
```

0 commit comments

Comments
 (0)