코테 공부

백준[14719] 빗물 (파이썬 풀이

moonsun623 2021. 10. 6. 18:22
반응형

https://www.acmicpc.net/problem/14719

 

14719번: 빗물

첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치

www.acmicpc.net

 

내가 한 풀이

 

주어진 block 리스트 중 가장 큰 값을 가진 인덱스를 구하고 maxIndex라고 선언한다.

1번째 for문에서는 0부터 maxIndex 까지 돌면서

temp 보다 block[i]가 더 크면,  total에 더한 후 temp를 block[i] 값으로 변경해준다.

2번째 for문에서는 w-1부터 maxIndex까지 감소하며 돌면서

같은 동작을 해준다.

마지막에 누적된 total 값에서 block의 합(쌓여있는 블록 개수) 만큼 빼준다.

 

h,w=map(int,input().split(" "))
block=list(map(int,input().split(" ")))
maxH,maxL=1,0
total=0
temp=0

for i in range(len(block)):
    if maxH<block[i]:
        maxH=block[i]
        maxIndex=i
#1번째 for문
for i in range(maxIndex+1):
    if block[i]>temp:
        temp=block[i]
    total+=temp
temp=0
#2번째 for문
for i in range(w-1,maxIndex,-1):
    if block[i]>temp:
        temp=block[i]
    total+=temp
print(total-sum(block))