TIL#107:[Algorithm]プログラマー|フルナビゲーションシミュレーション試験


模擬試験


質問する


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


    answersreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]

    I/O例説明


    例1
    捕手1はすべての質問に答えた.
    逮捕者2はすべての問題を間違えた.
    逮捕者3はすべての問題を間違えた.
    そのため、一番多くの質問に答えた人は水泡子です.
    例2
    誰もが2つの問題に正解した.

    に答える

    def solution(answers):
        boss = []
        temp = []
    
        count_one = 0
        count_two = 0
        count_three = 0
    
        one = [1, 2, 3, 4, 5]
        two = [2, 1, 2, 3, 2, 4, 2, 5]
        three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
        for x, num in enumerate(answers):
            if num == one[x % len(one)]:
                count_one += 1
            if num == two[x % len(two)]:
                count_two += 1
            if num == three[x % len(three)]:
                count_three += 1
        
        temp = [count_one, count_two, count_three]
    
        [boss.append(x+1) for x, num in enumerate(temp) if num == max(temp)]
    
        return boss
       
    
    print(solution([1,3,2,4,2]))