[完全探索]模擬試験-PISN
質問する
数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
試験には最大10000問が含まれている.
質問の答えは1 2 3 4 5のうちの1つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.
I/O例
answers return
[1,2,3,4,5][1]
[1,3,2,4,2][1,2,3]
に答える
def solution(answers):
answer = []
one = [1,2,3,4,5]
two = [2,1,2,3,2,4,2,5]
thr = [3,3,1,1,2,2,4,4,5,5]
scores = [0,0,0]
for i in range(len(answers)):
if one[i%len(one)] == answers[i]:
scores[0] += 1
if two[i%len(two)] == answers[i]:
scores[1] += 1
if thr[i%len(thr)] == answers[i]:
scores[2] += 1
for i in range(3):
if scores[i] == max(scores):
answer.append(i+1)
return answer
別の解釈
ddef solution(answers):
pattern1 = [1,2,3,4,5]
pattern2 = [2,1,2,3,2,4,2,5]
pattern3 = [3,3,1,1,2,2,4,4,5,5]
score = [0, 0, 0]
result = []
for idx, answer in enumerate(answers):
if answer == pattern1[idx%len(pattern1)]:
score[0] += 1
if answer == pattern2[idx%len(pattern2)]:
score[1] += 1
if answer == pattern3[idx%len(pattern3)]:
score[2] += 1
for idx, s in enumerate(score):
if s == max(score):
result.append(idx+1)
return result
💡TIL
📌インデックス番号と要素を同時に使用する必要がある場合は、列挙を使用します.
for idx, value in enumerate(t):
print(idx,value)
0 1
1 5
2 7
3 33
4 39
5 52
Reference
この問題について([完全探索]模擬試験-PISN), 我々は、より多くの情報をここで見つけました https://velog.io/@stseo012/완전탐색-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol