Written by
Sunwoo Han
on
on
[JAVA]빗물
빗물
코드
import java.io.*;
import java.util.*;
class Main {
static int[] map;
static int ans, left, right;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int h = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
map = new int[w];
ans = left = right = 0; // 이러한 형태는 static(불변)일 때만 가능
st = new StringTokenizer(br.readLine());
for(int i = 0; i < w; i++) {
int n = Integer.parseInt(st.nextToken());
map[i] = n;
}
// 인덱스마다 모이는 빗물 계산 ( 첫번째 기둥과 마지막 기둥의 위치는 제외 )
for(int i = 1; i < w - 1; i++) {
left = right = 0;
// 왼쪽에서 가장 높은 건물의 높이
for(int j = 0; j < i; j++) {
left = Math.max(map[j], left);
}
// 오른쪽에서 가장 높은 건물의 높이
for(int j = i + 1; j < w; j++) {
right = Math.max(map[j], right);
}
// 더 낮은 건물을 기준으로 현재 인덱스에 모이는 빗물
if(map[i] < left && map[i] < right) {
ans += Math.min(left, right) - map[i];
}
}
System.out.println(ans);
}
}
설명
Comments
ALGORITHM 의 다른 글
-
[JAVA]1037. 약수 04 Jan 2021
-
[JAVA]1018. 체스판 다시 칠하기 04 Jan 2021
-
[JAVA]1010. 다리 놓기 04 Jan 2021
-
[JAVA]7576. 토마토 05 Dec 2020
-
[JAVA]1697. 숨바꼭질 04 Dec 2020
-
[JAVA]5337. 웰컴 03 Dec 2020
-
[JAVA]5217. 쌍의 합 03 Dec 2020
-
[JAVA]4892. 숫자 맞추기 게임 03 Dec 2020
-
[JAVA]4101. 크냐? 02 Dec 2020
-
[JAVA]2558. A+B - 2 02 Dec 2020
-
[JAVA]1550. 16진수 02 Dec 2020
-
[JAVA]압축 25 Oct 2020
-
[JAVA]빗물 25 Oct 2020
-
[JAVA]유기농 배추 22 Oct 2020
-
[JAVA]미로 탐색 21 Oct 2020
-
[JAVA]옥상 정원 꾸미기 08 Oct 2020
-
[JAVA]탑 08 Oct 2020
-
[JAVA]안정적인 문자열 07 Oct 2020
-
[JAVA]균형잡힌 세상 07 Oct 2020
-
[JAVA]괄호의 값 06 Oct 2020
-
[JAVA]쇠막대기 06 Oct 2020
-
[JAVA]카드2 05 Oct 2020
-
[JAVA]큐 2 05 Oct 2020
-
[JAVA]제로 05 Oct 2020
-
[JAVA]괄호 04 Oct 2020
-
[JAVA]AC 04 Oct 2020
-
[JAVA]회전하는 큐 04 Oct 2020
-
[JAVA]스택 수열 04 Oct 2020
-
[JAVA]덱 03 Oct 2020
-
[JAVA]큐 03 Oct 2020
-
[JAVA]스택 03 Oct 2020
-
[JAVA]애너그램 만들기 03 Oct 2020
-
[JAVA]키로거 02 Oct 2020
-
[JAVA]요세푸스 문제 02 Oct 2020
-
[JAVA]방 번호 02 Oct 2020
-
[JAVA]방 배정 01 Oct 2020
-
[JAVA]Strfry 28 Sep 2020
-
[JAVA]에디터 28 Sep 2020
-
[JAVA]개수 세기 28 Sep 2020
-
[JAVA]알파벳 개수 28 Sep 2020
-
[JAVA]별 찍기 - 9 27 Sep 2020
-
[JAVA]별 찍기 - 8 27 Sep 2020
-
[JAVA]별 찍기 - 7 27 Sep 2020
-
[JAVA]별 찍기 - 6 27 Sep 2020
-
[JAVA]별 찍기 - 5 27 Sep 2020
-
[JAVA]별 찍기 - 4 27 Sep 2020
-
[JAVA]별 찍기 - 3 26 Sep 2020
-
[JAVA]별 찍기 - 2 26 Sep 2020
-
[JAVA]별 찍기 - 1 26 Sep 2020
-
[JAVA]카드 역배치 26 Sep 2020
-
[JAVA]핸드폰 요금 26 Sep 2020
-
[JAVA]숫자의 개수 25 Sep 2020
-
[JAVA]숫자 25 Sep 2020
-
[JAVA]일곱 난쟁이 25 Sep 2020
-
[JAVA]대표값2 25 Sep 2020
-
[JAVA]홀수 25 Sep 2020
-
[JAVA]최댓값 24 Sep 2020
-
[JAVA]윷놀이 24 Sep 2020
-
[JAVA]주사위 세개 24 Sep 2020
-
[JAVA]윤년 24 Sep 2020
-
[JAVA]세수정렬 24 Sep 2020
-
[JAVA]시험 성적 23 Sep 2020
-
[JAVA]사칙연산 23 Sep 2020
-
[JAVA]고양이 23 Sep 2020
-
[JAVA]Hello World 23 Sep 2020
-
[JAVA]A+B 23 Sep 2020
-
[JAVA]콜라츠 추측 22 Aug 2020
-
[JAVA]평균 구하기 22 Aug 2020
-
[JAVA]하샤드 수 21 Aug 2020
-
[JAVA]핸드폰 번호 가리기 21 Aug 2020
-
[JAVA]행렬의 덧셈 20 Aug 2020
-
[JAVA]x만큼 간격이 있는 n개의 숫자 20 Aug 2020
-
[JAVA]직사각형 별찍기 11 Aug 2020