문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42840
정답이 들어있는 배열 answers이 들어올 때, 가장 많이 맞춘 수포자를 리턴하는 문제이다.
1번 수포자는 [1, 2, 3, 4, 5] 순서로 찍고, 2번은 [2, 1, 2, 3, 2, 4, 2, 5], 3번은 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] 순서로 찍는다.
def solution(answers):
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]
supos = [0, 0, 0]
for idx, answer in enumerate(answers):
if answer == one[idx % 5]:
supos[0] += 1
if answer == two[idx % 8]:
supos[1] += 1
if answer == three[idx % 10]:
supos[2] += 1
max_score = max(supos)
answer = []
for idx, score in enumerate(supos):
if score == max_score:
answer.append(idx+1)
return answer
따라서 난 각 수포자가 찍는 패턴을 각각의 배열(one, two, three)안에 넣어줬고, n번째 수포자가 맞을 때마다 n번째 수포자의 점수에 1점을 추가해주기 위해 supos라는 배열을 만들어줬다.
그리고 완전탐색 문제답게 for문을 돌려 각각 몇 문제를 맞췄는지 확인하고, 아래 코드로 가장 많이 맞춘 사람을 return해준다.