반응형
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 을 풀었다면 쉽게 풀 수 있는 문제다.
반응형
댓글