Search
Duplicate

빗물

주차
0
문제번호
14719
언어
티어
골드
유형
구현
시뮬레이션
nj_Blog
nj_상태
완료
이해도
풀이
사람
이해도 2
13 more properties

Memo

벽을 기준으로 코드를 작성하면 매우 어려워 지는 문제였습니다.
빗물을 바닥으로부터 한 칸씩 증가시켜 가며 직사각형의 넓이를 구하는 방식을 얼마나 빠르게 생각해 내느냐가 관건입니다.

Code

제출 날짜

@3/29/2021

메모리

2020 KB

시간

0 ms
#include <iostream> int blocks[502]; int H, W; int ans; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { input_faster(); std::cin >> H >> W; for (int i = 0 ; i < W ; i++) std::cin >> blocks[i]; } void solve() { int l_block; for (int i = 1 ; i <= H ; i++) { l_block = -1; for (int j = 0 ; j < W ; j++) { if (blocks[j] >= i) { if (l_block == -1) { l_block = j; continue; } ans += (j - l_block - 1); l_block = j; } } } } void print_val() { std::cout << ans; } int main() { input(); solve(); print_val(); return (0); }
C++
복사