これはPython|Griddy②とコードテストです


グリディの実戦問題
3)デジタルカードゲーム
多くのデジタルカードの中から最高のデジタルカードを1枚選ぶゲーム
ⓛカードをN*M形式で配置する(N:行M:列)
②引く札の行を選ぶ
③選択した行の中で最も低い番号のカードを抽出する
=>1~3回、最大数のカードを確実に引く
(入力):N,M(1行目)、各カードの数字(2行目)
(出力):選択したカードの数値を出力します.
👇 問題に答える前に書いたコード
N,M=map(int,(input().split()))
card=list()
for n in range(0,N):
  row=list(map(int,(input().split())))
  card.append(row)

min_card=list()
for n in range(0,N):
  min_card.append(min(card[n]))
print(max(min_card))
📝ローあたりの検索最小数=>最小数の最大数
📌回答例を表示してフィードバック
問題の解き方と流れはほぼ一致していますが、私が書いたコードにはfor文が2つあるので、コードが冗長になります.一つの束で助けることもできます.
👇 フィードバック後コード
N,M=map(int,(input().split()))
card=list()
#result=0 책 풀이
for n in range(0,N):
  row=list(map(int,(input().split())))
  card.append(min(row))
  # min_value=min(row) 책 풀이
  #result=max(result,min_value) 책 풀이
print(max(card))
4)1まで
Nが1になる前に、2つのプロセスのうちの1つを繰り返し選択して実行します.ただし、2番目の演算は、NをKで割った場合にのみ選択可能である
①Nマイナス1
②NをKで割る
=>NとKが与えられた場合、Nが1になる前に、1回または2回のプロセスを実行する最小回数は?
(入力):N,K(N>=K)
(出力):①回または②回のプロセス実行回数の最高値
👇 問題に答える前に書いたコード
def sol_1(N):
  ct=0
  while N!=1:
    N=N-1
    ct+=1
  return ct

def sol_2(N,K):
  ct=0
  while N!=1:
    N=N//K
    ct+=1
  return ct

N,K=map(int,(input().split()))
print(min(sol_1(N),sol_2(N,K)))
📌 回答例を表示してフィードバック
共有は減算よりも速い=>確率的に最小回数に近い可能性が高い
②問題に対する理解にも誤りがある.重複計算のみを選択するのではありません
👉 分離プロセスを選択し、計算を繰り返しますが、後で分離できないため0になる可能性があります.
👇 フィードバック後コード
N,K=map(int,(input().split()))
ct=0
while N>=K: 
  if N<K:
    while N%K!=0:
      N-=1
      ct+=1
  else:
    N=N//K
    ct+=1
print(ct)