[백준/파이썬] 1049번 기타줄 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1049번 기타줄
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
기타줄 N개가 필요할 때,
여러 브랜드의 6개 묶음 가격과 낱개 가격이 주어집니다.
필요한 줄을 가장 저렴하게 구매하는 최소 비용을 구하는 문제입니다.
코드
n, m = tuple(map(int, input().split()))
packs = list()
eachs = list()
for T in range(m):
pack, each = tuple(map(int, input().split()))
packs.append(pack)
eachs.append(each)
minPack = min(packs)
minEach = min(eachs)
if(minPack >= minEach*min(6, n)):
print(n*minEach)
else:
cntPack = n // 6
cntEach = 0
if(minPack <= (n%6)*minEach):
cntPack+=1
else:
cntEach = n % 6
print(cntPack * minPack + cntEach * minEach)
설명
핵심은 다음 둘 중 더 싼 조합을 선택하는 것입니다.
- 전부 낱개로 구매
- 묶음을 최대한 쓰고, 남은 수량은 묶음 1개 추가 vs 낱개 구매 비교
가장 싼 묶음 가격(minPack)과 낱개 가격(minEach)만 알면
전체 최소 비용을 계산할 수 있습니다.
댓글남기기