模擬試験[第1級]Python


問題の説明


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



    I/O例説明


    I/O例#1
  • 捕手1はすべての質問に答えた.
  • 捕獲者2はすべての問題を間違えた.
  • 捕獲者3はすべての問題を間違えた.
  • だから一番多くの質問に答えた人は水泡子です.
    I/O例#2
  • 誰もが2つの問題に答えた
  • コード#コード#

    def solution(answers):
        pattern_answer = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]] # 5, 8, 10 개
        correct_list = [0]*3
        
        # [1, 3, 2, 4, 2, 1, 2, 3, 4, 5] -> 10문제의 답안지
        
        for i in range(len(answers)):
            if answers[i] == pattern_answer[0][i % len(pattern_answer[0])]: correct_list[0] += 1
            if answers[i] == pattern_answer[1][i % len(pattern_answer[1])]: correct_list[1] += 1
            if answers[i] == pattern_answer[2][i % len(pattern_answer[2])]: correct_list[2] += 1
        
            
        max_num = max(correct_list)
        if correct_list.count(max_num) == 1: return [correct_list.index(max_num)+1] # 가장 높은 점수를 받은 사람이 한명
        else: return [i+1 for i in range(3) if max_num == correct_list[i]] # 가장 높은 점수를 받은 사람이 여럿일 경우