업데이트:


오늘의 문제는 🚀 백준 16917번: 양념반 후라이드반 이다.

쉬운 문제라던데 나만 어려웠나보다…😂

수학문제라서 그런가 시간이 조금 오래걸렸다.. 자꾸 예외케이스가 생겨서..ㅠ




테스트케이스 이해하기

image

input: 양념치킨 가격, 후라이드 가격, 반반 가격, 양념 갯수, 후라이드 갯수

위의 경우는 설명처럼 반반 치킨 4마리와 양념 1마리를 사는게 7900원으로 가장 적다.


image

하지만 위의 경우는 치킨을 조건 보다 넘치게 시키더라도, 조건이 갖춰지고 가격이 더 낮은게 정답이다!

그럼 반반치킨을 후라이드 갯수*2배로 사면 해결이 된다.

추가 테스트 케이스: 78 1 4 10 8 일때, 80 ⇒ 출처



알고리즘

+수정

for문을 돌릴 필요가 없다.

그냥 세가지 케이스를 구해서 가장 작은 값이 답이다!

  1. 각각 계산한 값 (ax + by)
  2. 겹치는 부분만 반반으로 한 경우 (c * min * 2 + a * (x-min) +b * (y-min))
  3. 아예 반반으로반 산 경우



정답코드

a, b, c, x, y = map(int,input().split())
#기본값
defalut = a*x + b*y
min=min(x, y)
max=max(x, y)

#반반을 섞었을때 최소값
cal =  c * min * 2 + a * (x-min) +b * (y-min)
if defalut > cal:
    defalut = cal

#반반으로만 했을 때
if defalut <(c*max*2):
    print(defalut)
else:
    print(c*max*2)



🚀Reference: 백준 16917번: 양념반 후라이드반


카테고리:

업데이트: