Skip to content

Commit 9480e05

Browse files
committed
[Gold V] Title: 빗물, Time: 112 ms, Memory: 14332 KB -BaekjoonHub
1 parent 7934c62 commit 9480e05

2 files changed

Lines changed: 35 additions & 28 deletions

File tree

백준/Gold/14719. 빗물/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
### 성능 요약
66

7-
메모리: 14508 KB, 시간: 148 ms
7+
메모리: 14332 KB, 시간: 112 ms
88

99
### 분류
1010

1111
구현, 시뮬레이션
1212

1313
### 제출 일자
1414

15-
2024년 1월 11일 19:14:02
15+
2025년 1월 17일 20:49:03
1616

1717
### 문제 설명
1818

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
1-
import java.io.BufferedReader;
2-
import java.io.InputStreamReader;
3-
import java.util.StringTokenizer;
4-
import java.util.stream.Stream;
5-
1+
import java.io.*;
2+
import java.util.*;
63
public class Main {
7-
8-
static int right, left, high, width, ans;
4+
static int h, w;
95
static int[] map;
10-
6+
static StringTokenizer st;
7+
static StringBuilder sb;
8+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
1110
public static void main(String[] args) throws Exception{
12-
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13-
StringTokenizer st = new StringTokenizer(br.readLine());
11+
pre_setting();
12+
bw.append(sb.append(rain_check()));
13+
bw.close();
14+
}
1415

15-
high = Integer.parseInt(st.nextToken());
16-
width = Integer.parseInt(st.nextToken());
17-
map = Stream.of(br.readLine().split(" ")).mapToInt(Integer :: parseInt).toArray();
18-
for (int now = 1; now < map.length - 1; now++) {
19-
right = 0;
20-
left = 0;
16+
private static int rain_check() {
17+
int ans, left, right;
2118

22-
for (int i = 0; i < now; i++) {
23-
left = Math.max(map[i], left);
24-
}
25-
for (int i = now + 1; i < map.length; i++) {
26-
right = Math.max(map[i], right);
27-
}
28-
if(map[now] < right && map[now] < left){
29-
ans += Math.min(right, left) - map[now];
30-
}
19+
ans = 0;
20+
for(int now = 1; now < w - 1; now++){
21+
left = 0;
22+
right = 0;
23+
for (int l = 0; l < now; l++) left = Math.max(map[l], left);
24+
for (int r = now + 1; r < w; r++) right = Math.max(map[r], right);
25+
26+
ans += Math.max(Math.min(left, right) - map[now], 0);
3127
}
32-
System.out.println(ans);
28+
return ans;
3329
}
3430

31+
private static void pre_setting() throws Exception{
32+
sb = new StringBuilder();
33+
st = new StringTokenizer(br.readLine());
34+
35+
h = Integer.parseInt(st.nextToken());
36+
w = Integer.parseInt(st.nextToken());
37+
map = new int[w];
38+
39+
st = new StringTokenizer(br.readLine());
40+
for(int i = 0; i < w; i++) map[i] = Integer.parseInt(st.nextToken());
41+
}
3542
}

0 commit comments

Comments
 (0)