PS

[백준/Python] (D4) 라면 사기 (Large) - 18186

MSHUN 2024. 3. 7.
반응형

Baekjoon Online Judge의 18186 라면 사기 (Large) 문제의 Python풀이입니다.

 

18186번: 라면 사기 (Large)

라면매니아 교준이네 집 주변에는 N개의 라면 공장이 있다. 각 공장은 1번부터 N번까지 차례대로 번호가 부여되어 있다. 교준이는 i번 공장에서 정확하게 Ai개의 라면을 구매하고자 한다(1 ≤ i

www.acmicpc.net

💻코드

N,B,C = map(int,input().split())
An = list(map(int, input().split())) + [0, 0]  
cost = 0
if B<=C:
    cost = sum(An)*B
else:
    def f(d, m, s):
        global cost
        for i in d:
            An[i] -= m
        cost += s * m

    for i in range(N):
        if An[i+1] > An[i+2]:
            f([i, i+1], min(An[i], An[i+1] - An[i+2]), B+C)
            f([i, i+1, i+2], min(An[i:i+3]), B+2*C)
            f([i], An[i], B)
        else:
            f([i, i+1, i+2], min(An[i:i+3]), B+2*C)
            f([i, i+1], min(An[i], An[i+1]), B+C)
            f([i], An[i], B)
        An[i] = 0

print(cost)

🧠풀이

라면 사기 (Small) 에서 가격을 따로 입력받는다.

B보다 C가 크거나 같으면 굳이 같이 살 필요가 없기때문에 전부 B가격에 구매하는게 제일 싸다.

🤔느낀 점

라면 사기(Small) - 18185 을 풀었다면 쉽게 풀 수 있는 문제다.

Baekjoon Online Judge

반응형

댓글