본문 바로가기

알고리즘

python 백준1049 기타줄(BOJ1049)

문제링크 : https://www.acmicpc.net/problem/1049

 

1049번: 기타줄

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

www.acmicpc.net

직접 적으면서 고민해보니 크게 어렵지는 않았다

이 문제는 예제 케이스도 많고 해서 다른사람들도 아이디어만 떠오른다면 오답없이 잘 통과할것같다

import sys

input = sys.stdin.readline
#끊어진 기타 줄 수, 가게 수
n, m = map(int, input().split())
set = []
single = []
#입력
for _ in range(m):
  a,b = map(int, input().split())
  set.append(a)
  single.append(b)

#몫, 나머지
quotient = n // 6
remainder = n % 6
set_compare = []
single_compare =[]
#결과값
result = 0
#몫이 0보다 크다면 한 세트 6개 기준으로 가격을 계산해서 
#가장 저렴한것으로 몫만큼 구매
if quotient > 0:
  for i in range(m):
    set_compare.append(set[i])
    set_compare.append(single[i]* 6)
  result += min(set_compare) * quotient
#나머지만큼 계산해서 한 세트로 살때와 낱개로 살때 가격을 계산
#그중 가장 저렴한 것으로 구매
for i in range(m):
  single_compare.append(set[i])
  single_compare.append(single[i]* remainder)
result += min(single_compare)
#출력
print(result)