💬 Comment
🔑 Solution
돈을 최소로 쓸려면
저렴하려면
데이터 저장하는 DS
팩에서 젤 저렴한값 ↔ 낱개에서 젤 저렴한 값 비교하기
팩으로 살 수 잇을 만큼 사고, 나머지에 대해 처리하기
👉 문제 곳곳에 숫자와, “적어도”와 같은 표현 → 문제해결에 필요한 조건들이다.
# 2초 / 128MB
# 돈을 적게 쓰려고 함
# 6줄 패키지 OR 1개 또는 그 이상의 줄을 낱개로 살 수 있음
# 목적
# 적어도, N개를 사기 위해 필요한 "돈의 수"
import sys
input = sys.stdin.readline
# N : 끊어진 기타줄의 갯수 : 1이상, 100이하
# M : M개의 브랜드 : 1이상, 50이하
N, M = map(int, input().split())
pack_list = []
each_list = []
for m in range(M):
# DS : 패키지 따로, 낱개 배열 따로 저장
# 각 브랜드에서 파는 패키지가격 / 낱개 가격
pack, each = map(int, input().split())
pack_list.append(pack)
each_list.append(each)
# 각 배열 정렬 # 20, 40, 60 # 4, 7, 8
pack_list.sort()
each_list.sort()
# 6개 단위에 대해서 먼저 비교 # 20 vs 4 * 6 => 20
min_pack_val = 6006
ans_cost = 0
# 패키지가 더 저렴하면,
if pack_list[0] < each_list[0] * 6:
# N // 6 만큼 패키지로 지불
ans_cost += (N // 6)* pack_list[0]
# 남은 거에 대해서 재계산
ans_cost += min((N % 6) * each_list[0], pack_list[0])
# 낱개가 더 저렴하다면,
else:
# 모든 기타줄을 낱개로 지불
min_pack_val = each_list[0] * 6
ans_cost += N * each_list[0]
print(ans_cost)