알고리즘

[백준, 파이썬, 1049번] 기타줄

hminor 2023. 12. 18. 11:38

풀이

  • 우선 6개 통 구매 가격, 낱개 구매 가격에 대한 배열 생성 후 값 변경한 다음 정렬
  • 이후 낱개 6개와 6개 통 구매의 금액 비교로 조건 분기를 하며
  • 통 구매가 더 적은 경우엔 m을 6으로 나눈 몫 만큼만 통으로 구매한 다음
  • 나머지 개수를 낱개의 값으로 곱한것이 통으로 구매한 가격보다 큰지에 대한
  • 조건분기 처리를 한 번 더 하여 문제 해결 

 

import sys
input = sys.stdin.readline

m,n = map(int,input().split())
f_li, li = [0]*n, [0]*n
result = 0

for i in range(n):
    x,y = map(int,input().split())
    f_li[i], li[i] = x, y

f_li.sort()
li.sort()

if li[0]*6 > f_li[0]:
    result = (m//6)*f_li[0]
    if m%6*li[0] > f_li[0]: result += f_li[0]
    else: result += m%6*li[0]
else: result = m*li[0]
print(result)