1049ギター弦
5130 ワード
質問する
Day Of MorningのギタリストKantoが使用している その他 N行 切れた.そのため、新しい行を購入または交換する必要があります.疆土はできるだけお金を少なくします. 6行セットを買うこともできますし、1つ以上の単行セットを買うこともできます.
1つのプログラムを作成して、プログラムの中で切れた他の行数Nと他の行ブランドM個、各ブランドが販売する他の行数6個のパッケージの価格、および単独で購入する時の価格を与える時、少なくともN個を買うのに最小限のお金がかかります.
入力
1行目はNとMです.Nは100以下の自然数、Mは50以下の自然数である.2行目から、M行では、各ブランドの包装価格と単一価格が空白に区分される.価格は0以上、1000以下の整数です.
しゅつりょく
最初の行 少なくともN本のギター弦を購入するのに必要な資金の最高価格を印刷します.
N,M = map(int,input().split())
package = []
single = []
for i in range(M):
a,b = map(int,input().split())
package.append(a)
single.append(b)
package_min = min(package)
single_min = min(single)
#single의 단가가 더 비쌀 때
if package_min < single_min*6:
# 6으로 나누어 떨어지지 않는 나머지 값을 계산하려 할 때, 패키지 값보다 낱개 값이 더 비싸면 "패키지 값 선택"
if package_min < (N%6)*single_min:
print((N//6)*package_min+package_min)
else:
print((N//6)*package_min+(N%6)*single_min)
#package의 단가가 더 비쌀 때
elif package_min >= single_min:
print(N*single_min)
に感銘を与えるこれは容易な問題であるが,短時間ではすぐに実現しなかった.
数学の思考と表現力にまだ欠けているようだ.
軽率にNaiveで計算(もちろんGredy問題)するよりも、問題の中で何が要求されているのか、核心的な考え方(単価で比較)を指摘します.
GRADY問題でも,ある程度の数学的思考に基づいて論理を立てる.
Reference
この問題について(1049ギター弦), 我々は、より多くの情報をここで見つけました https://velog.io/@a87380/1049번-기타줄-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol