模擬試験(プログラマー)


リンクテキスト

問題を理解する


数学は数学を放棄する人の略語である.「囚人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...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.

私の理解


1、2、3回とも一定のパターンで繰り返す.したがって,ルールを見つけてこれらのルールに従えば,問題を簡単に解決できる.

Python

def solution(answers):
    a,b,c =0 ,0,0
    a_ans =[1,2,3,4,5]
    b_ans =[2,1,2,3,2,4,2,5]
    c_ans =[3,3,1,1,2,2,4,4,5,5]
    
    for i in range(len(answers)):
        a1,a2,a3 = i%5,i%8,i%10
        
        if a_ans[a1] == answers[i]:
            a+=1
        if b_ans[a2] == answers[i]:
            b+=1
        if c_ans[a3] == answers[i]:
            c+=1
    res =[]
    if max(a,b,c) == a:
        res.append(1)
    if max(a,b,c) == b:
        res.append(2)
    if max(a,b,c) == c:
        res.append(3)
    
    return res
maxで最高価格を見つければいいです.