BOJ 14719 빗물
메모리 : 11792 KB
시간 : 104 ms
BOJ 14719 빗물 Gold 5
풀이
- 현재 위치(i)에서 왼쪽으로 가장 높은 블록, 오른쪽으로 가장 높은 블록을 찾아준다.
 - 왼쪽, 오른쪽 중 작은 값 - 현재 위치의 블록 의 값을 더해준다.
 
느낀점
if문으로 비교하는 거랑 Math.max랑 누가 더 빠를까 궁금했는데 
if문으로 했을때 100ms 나왔고 Math.max는 104ms 나왔다. 
if문으로 하면 코드가 조금 길어지지만.. 조금 더 잘 써야겠다. 
코드
import java.io.*;
import java.util.*;
public class Main {
	static int H, W, left, right, sum;
	static int[] blocks;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		H = Integer.parseInt(st.nextToken());
		W = Integer.parseInt(st.nextToken());
		blocks = new int[W];
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < W; i++) {
			blocks[i] = Integer.parseInt(st.nextToken());
		}
		
		for (int i = 0; i < blocks.length; i++) {
			left = right = 0;
			
			for (int j = i; j >= 0; j--) {
				if (blocks[j] > left) {
					left = blocks[j];
				}
			}
			for (int j = i; j < blocks.length; j++) {
				if (blocks[j] > right) {
					right = blocks[j];
				}
			}
			
			sum += Math.abs(Math.min(left, right) - blocks[i]);
		}
		
		System.out.println(sum);
	}
}