문제
2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다.
비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까?
입력
첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500)
두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다.
따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다.
출력
2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라.
빗물이 전혀 고이지 않을 경우 0을 출력하여라.
코드
fun main()
{
val input = readLine()!!.split(" ").map{it.toInt()}
val H = input[0]
val W = input[1]
val water = Array(H,{IntArray(W,{0})})
val wt = readLine()!!.split(" ").map{it.toInt()}
for(i in 0..W-1)
{
repeat(wt[i])
{
j ->
water[j][i] = 1
}
}
var ans = 0
for(i in 0..H-1)
{
var stack = 0
var wall = false
var now_wall = false
for(j in 0..W-1)
{
if(water[i][j] == 1){
if(!wall) wall = true
else if(wall && now_wall) {
now_wall = false
ans += stack
stack = 0
}
}
else if(water[i][j] == 0 && wall) {
now_wall = true
stack++
}
}
}
println(ans)
}
'백준 > 기타' 카테고리의 다른 글
백준 [14658] kotlin (0) | 2023.01.09 |
---|---|
백준 [12919] kotlin (0) | 2023.01.08 |
백준 1038 [kotlin] (0) | 2022.07.06 |
백준 2023 [kotlin] (0) | 2022.07.04 |
백준 13549 [kotlin] (0) | 2022.07.01 |