DHistory

[Baekjoon] Greedy - 1049 기타줄 본문

Computer Science/Algorithm

[Baekjoon] Greedy - 1049 기타줄

ddu0422 2023. 8. 16. 11:46

문제

 

1049번: 기타줄

첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주

www.acmicpc.net

 

풀이

"""
기타줄의 개수: N
브랜드 개수: M
각 줄은 6개 패키지 가격 / 낱개 가격

기타줄 N개를 사는데 최소한의 비용은?
(N개를 오버해서 구매하지만 값이 싼 경우가 있을 수 있다.)
"""
n, m = map(int, input().split())
brands = []
for _ in range(m):
    package, ea = map(int, input().split())
    brands.append((package, ea))


def solution(n, brands):
    packages = min(brands, key=lambda x: x[0])[0]
    each_others = min(brands, key=lambda x: x[1])[1]
    
    return min(
        ((n // 6) + 1) * packages,                   # 패키지로만 구매하는 경우
        (n // 6) * packages + (n % 6) * each_others, # 패키지와 낱개를 혼합하여 구매하는 경우
        n * each_others                              # 낱개로만 구매하는 경우
    )


print(solution(n, brands))

 

채점 결과