Sangmun

백준 1049번 기타줄 본문

알고리즘/백준

백준 1049번 기타줄

상상2 2023. 2. 3. 15:05

https://www.acmicpc.net/problem/1049

 

1049번: 기타줄

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

www.acmicpc.net

 

그리디 알고리즘을 이용하면 쉽게 풀 수 있는 문제이다.

단순히 기타줄 세트와 낱개의 가격에서 가장 저렴한 비용만을 이용하면 쉽게 해결이 되는 문제이다.

최소가격을 결정하는 케이스는 3개뿐이라 3개의 케이스를 모두 계산을 해서 다시 최소값을 구하면 되는 문제이다.

import sys
input = sys.stdin.readline

n, m = map(int,input().split())

set_list = []
each_list = []
for _ in range(m):

    a, b = map(int,input().split())
    set_list.append(a)
    each_list.append(b)

set_list.sort()
each_list.sort()

# 3가지 케이스가 존재함
# 그냥 낱개로 사기
# 그냥 세트로 다 사버리기
# 세트로 살수있는 만큼만 사고 나머지는 낱개로 사기

each_price = each_list[0]*n
number = n // 6
if n % 6:
    number += 1
set_price = set_list[0] * number
number = n // 6
set_with_each_price = set_list[0]*number + each_list[0]*(n%6)

print(min(each_price, set_price, set_with_each_price))

'알고리즘 > 백준' 카테고리의 다른 글

백준 7490번 0 만들기  (0) 2023.02.04
백준 1449번 수리공  (0) 2023.02.03
백준 11057 오르막 수  (0) 2022.12.22
백준 11052번 카드 구매하기 파이썬  (0) 2022.12.21
백준 9935번 문자열 폭발  (0) 2022.12.14
Comments