💜[アルゴリズム]1.グレースケールアルゴリズム
9822 ワード
1.概念問題
1.1.だいすうのほうそく
:配列の大きさN,数字を加算した回数M,そしてkの場合,与えられた数をM回加算して最大数を形成する法則.
配列内のインデックスの数は、kを連続的に超えることはできません.
[2]N個の自然数、区切り:スペース
map(変換関数、巡回可能データ)
最大と最小の数字を繰り返し追加するだけで
n,m,k = map(int,input().split())
# 배열크기:5, 더해지는 횟수:8, 연속해서 더해질 수 있는 횟수:3
nlist=list(map(int,input().split()))
# 2,4,5,4,6
nlist.sort(reverse=True)
print(nlist)
first=nlist[0]
second=nlist[1]
result = 0
5 8 3
2 4 5 4 6
[6, 5, 4, 4, 2]
while True:
for i in range(k):
if m ==0:
break
result += first
m -= 1
if m==0:
break
result +=second
m-=1
print(result)
0
さらに最適化
Mは(K+1)で区切られていない
Mを(K+1)で割った最大数.
M//( K + 1 ) * K + M % (K+1)
n,m,k = map(int,input().split())
# 배열크기:5, 더해지는 횟수:8, 연속해서 더해질 수 있는 횟수:3
nlist=list(map(int,input().split()))
# 2,4,5,4,6
nlist.sort(reverse=True)
print(nlist)
first=nlist[0]
second=nlist[1]
result = 0
count = int(m/(k+1))*k
count += m %(k+1)
result = 0
result +=(count)*first
result +=(m-count)*second
print(result)
5 8 3
2 4 5 4 6
[6, 5, 4, 4, 2]
46
1.2.デジタルカードゲーム
複数のデジタルカードの中から一番高いカードを1枚選ぶゲーム.
n, m = map(int,input().split()) #행 열
min_max=list()
result=0
for i in range(n):
linecard = list(map(int,input().split()))
min_x=min(linecard)
result = max(result,min_x) # 기존의 것과 현재의 것을 비교
print(result)
1 4
4 3
1 5
3
Reference
この問題について(💜[アルゴリズム]1.グレースケールアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@eundms/python-알고리즘-1.-그리디-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol