def solution(answers):
    pattern = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
    ]
    solved = [0 for _ in range(len(pattern))]

    for i in range(len(answers)):
        for j in range(len(pattern)):
            if answers[i] == pattern[j][i % len(pattern[j])]:
                solved[j] += 1

    # max_value와 동일한 값을 가지고 있는 요소를 필터링 후 인덱스 + 1로 변환
    max_value = max(solved)
    return [i + 1 for i, x in enumerate(solved) if x == max_value]


# 정확성  테스트
# 테스트 1 〉	통과 (0.03ms, 10.2MB)
# 테스트 2 〉	통과 (0.01ms, 10.2MB)
# 테스트 3 〉	통과 (0.01ms, 10.2MB)
# 테스트 4 〉	통과 (0.01ms, 10.2MB)
# 테스트 5 〉	통과 (0.05ms, 10.2MB)
# 테스트 6 〉	통과 (0.05ms, 10.2MB)
# 테스트 7 〉	통과 (3.22ms, 10.3MB)
# 테스트 8 〉	통과 (0.99ms, 10.2MB)
# 테스트 9 〉	통과 (5.69ms, 10.2MB)
# 테스트 10 〉	통과 (2.54ms, 10.3MB)
# 테스트 11 〉	통과 (6.17ms, 10.3MB)
# 테스트 12 〉	통과 (5.26ms, 10.3MB)
# 테스트 13 〉	통과 (0.32ms, 10.2MB)
# 테스트 14 〉	통과 (5.95ms, 10.3MB)
# 채점 결과
# 정확성: 100.0
# 합계: 100.0 / 100.0

assert (solution([1, 2, 3, 4, 5]) == [1])
assert (solution([1, 3, 2, 4, 2]) == [1, 2, 3])
