import math
def solution(answers):
answer = []
s = [[1, 2, 3, 4, 5] * math.ceil((len(answers)/5)),
[2, 1, 2, 3, 2, 4, 2, 5] * math.ceil((len(answers)/8)),
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * math.ceil((len(answers)/10))]
score = [0, 0, 0]
for i in range(len(s)):
for j in range(len(answers)):
if s[i][j] == answers[j]:
score[i] += 1
max_score = max(score)
if max_score == score[0]:
answer.append(1)
if max_score == score[1]:
answer.append(2)
if max_score == score[2]:
answer.append(3)
return answer
#answers = [1,2,3,4,5]
answers = [1,3,2,4,2]
print(solution(answers))
for idx, answer in enumerate(answers):
if answer == pattern1[idx%len(pattern1)]:
score[0] += 1
if answer == pattern2[idx%len(pattern2)]:
score[1] += 1
if answer == pattern3[idx%len(pattern3)]:
score[2] += 1
다른 사람의 해석에서 나머지 부분은 비슷했지만 처음부터 다른 사람들의 정답을 answer의 길이에 맞추어 초기화한 것과 달리 인덱스 값을 나누었습니다.
또한 for in 뒤에 enumerate()를 이용하여 인덱스와 원소로 이루어진 튜플을 할당 받을 수 있도록 하였습니다.
https://www.daleseo.com/python-enumerate/
처음에 계속해서 5~12, 14번 테스트케이스가 통과가 되지 않았는데 그 이유는 가장 높은 점수를 가진 사람 만을 추출하고 여러 명일 경우 오름차순으로 정렬해 출력하는 것인데 그냥 맞춘 수가 높은 순으로 출력을 하였기 때문입니다.
이 문제를 풀 때 한번에 풀지 않고 풀다가 몇 일 후에 이어 풀게 되면서 문제를 잘못 해석한 것입니다. 이렇게 문제를 잘못 이해해 틀린 것은 내가 틀린 것이 아니라는 생각에 오히려 좋기도 하고 이런 것에 틀린 자신에 화가 나기도 합니다.