practivceAlgorithm/백준

[백준][Python] 18185 라면 사기(small)

findTheValue 2021. 10. 6. 10:41

3개 -> 2개 -> 1개 각 지점마다 살수있는 만큼 사주면 된다.

주의할 점은 두번째 지점의 갯수가 세번째보다 큰경우. 이경우는 2개씩 사는 과정을 먼저 해주어야한다.

 

import sys
input = sys.stdin.readline

def buy_triple(idx):
    global cost
    k = min(arr[idx: idx + 3])
    arr[idx] -= k
    arr[idx + 1] -= k
    arr[idx + 2] -= k
    cost += 7 * k


def buy_double(idx):
    global cost
    k = min(arr[idx: idx + 2])
    arr[idx] -= k
    arr[idx + 1] -= k
    cost += 5 * k


def buy_each(idx):
    global cost
    cost += 3 * arr[idx]


N = int(input())
arr = list(map(int, input().split())) + [0, 0]
cost = 0
for i in range(N):
    if arr[i + 1] > arr[i + 2]:
        k = min(arr[i], arr[i + 1] - arr[i + 2])
        arr[i] -= k
        arr[i + 1] -= k
        cost += 5 * k

        buy_triple(i)
    else:
        buy_triple(i)
        buy_double(i)
    buy_each(i)
print(cost)