728x90

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

 

1049번: 기타줄

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

www.acmicpc.net

 

 

# 조건

  • Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다.
  • 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다.
  • 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다.
  • 끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오.
 

# 접근 방법

  • 입력을 받으며 패키지 가격과 낱개 가격을 따로 리스트에 담아준다.
  • 각 리스트의 최소값을 변수에 담아 준 후, 패키지 1개와 낱개 6개의 가격을 비교해준다.
  • 패키지가 저렴한 경우 6의 배수로 패키지 구매 후 남는 수량을 낱개로 구매,
  • 반대의 경우 모두 낱개로 구매
n,m=input().split(' ')  
n=int(n)  
m=int(m)  
  
c=list()  
d=list()  
  
for i in range(m):  
    a,b=input().split(' ')  
    c.append(int(a))  
    d.append(int(b))  
  
e=min(c)  
f=min(d)  
  
if e < f*6:  
    if e < (n%6)*f:  
        print((n//6) * e + e)  
    else:  
        print((n//6) * e + (n%6) * f)  
  
elif e >= f*6:  
    print(n*f)
728x90