https://www.acmicpc.net/problem/14719
import sys
h, w = map(int, sys.stdin.readline().split())
mlist = list(map(int, sys.stdin.readline().split()))
block = [[0] * w for _ in range(h)]
for i in range(w):
for j in range(mlist[i]):
block[j][i] = 1
cnt = 0
for i in range(h):
mx = 0
mn = 0
if 2 <= block[i].count(1) < w:
for x in range(w):
if block[i][x] == 1:
mn = x
break
for y in range(w - 1, -1, -1):
if block[i][y] == 1:
mx = y
break
for k in range(mn, mx + 1):
if block[i][k] == 0:
cnt += 1
print(cnt)
예를 들어 아래의 그림에서 블록을 그려본다면
(내가 짠 코드는 블록이 위에서부터 그려짐)
이 때 물이 고이는 곳은 1과 1사이의 0이다
for i in range(h):
mx = 0
mn = 0
if 2 <= block[i].count(1) < w:
for x in range(w):
if block[i][x] == 1:
mn = x
break
for y in range(w - 1, -1, -1):
if block[i][y] == 1:
mx = y
break
for k in range(mn, mx + 1):
if block[i][k] == 0:
cnt += 1