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

문제

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

 

풀이

N개 이상의 기타줄을 구매하는데 필요한 최소 가격을 구하는 문제이다.

기타줄을 구매하는데 있어서 가능한 경우들은 다음과 같다.

  1. 패키지와 낱개를 섞어서 구매하는 경우
  2. 패키지만 구매하는 경우
  3. 낱개만 구매하는 경우
N, M = map(int, input().split())
cost = []
for _ in range(M) :
  six, one = map(int, input().split())
  cost.append([six, one])

answer = []  # 정답 후보 저장
pack = N // 6
each = N % 6
cost_pack = sorted(cost, key = lambda x : x[0])  # 패키지 가격 기준 오름차순으로 정렬
cost_each = sorted(cost, key = lambda x : x[1])  # 낱개 가격 기준 오름차순으로 정렬
answer.append(cost_pack[0][0] * pack + cost_each[0][1] * each)  # 경우 1
answer.append(cost_pack[0][0] * (pack + 1))  # 경우 2
answer.append(cost_each[0][1] * N)  # 경우 3
print(min(answer))
728x90