Level 1. 模擬試験


13.模擬試験


コーディングテスト練習>完全ナビゲーション>シミュレーションテスト
https://programmers.co.kr/learn/courses/30/lessons/42840#

問題の説明


数学は数学を放棄する人の略語である.「囚人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例


answer = 1,2,3,4,5 return = 1
answer = 1,3,2,4,2 return = 1,2,3

構想する


数字1、2、3を繰り返す撮影方式は、それぞれ独立しています.
resultの要素が各実行者リストのiの要素と同じである場合.
arrayに+1を追加します.
最終的に最も多くの回答者を基準に昇順するために,多くの回答者(index)からappendを実行してソートする.

解答方法

def solution(answers):
    re = [0,0,0]
    turn = []

    t_1 = [1,2,3,4,5]
    t_2 = [2,1,2,3,2,4,2,5]
    t_3 = [3,3,1,1,2,2,4,4,5,5]
    
    for i in range(len(answers)):
        if answers[i]==t_1[(i%5)]:
            re[0] +=1
        if answers[i]==t_2[(i%8)]:
            re[1] +=1
        if answers[i]==t_3[(i%10)]:
            re[2] +=1
                
    for i in range(3):
        if re[i] == max(re):
            turn.append(i+1)   

    return turn