1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
시험은 최대 10,000 문제로 구성되어있습니다.
문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
나의 코드
def solution(answers):
answer = []
li = []
number_1 = [1, 2, 3, 4, 5] # 1번이 찍는 패턴
number_2 = [2, 1, 2, 3, 2, 4, 2, 5] # 2번이 찍는 패턴
number_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] # 3번이 찍는 패턴
count_1 = 0 # 1번 맞춘 갯수 세기
count_2 = 0 # 2번 맞춘 갯수 세기
count_3 = 0 # 3번 맞춘 갯수 세기
k = 0
j = 0
l = 0
for i, element in enumerate(answers):
if element == number_1[k]:
count_1 += 1
k += 1
if k>=5: # 패턴이 5개가 끝이므로
k=0
if element == number_2[j]:
count_2 += 1
j += 1
if j>=8: # 패턴이 8개가 끝이므로
j=0
if element == number_3[l]:
count_3 += 1
l += 1
if l>=10: # 패턴이 10개가 끝이므로
l=0
k = count_1
j = count_2
l = count_3
li.append(k)
li.append(j)
li.append(l)
li.sort(reverse=True) # 큰 것 순으로
if li[0] != li[1]: # 가장 많이 맞춘 사람이 단 한명
if li[0] == k:
answer.append(1)
elif li[0] == j:
answer.append(2)
elif li[0] == l:
answer.append(3)
elif li[0] == li[1]: # 가장 많이 맞춘 사람이 2명 or 3명
if li[2] == k:
answer.append(2)
answer.append(3)
if li[1] == li[2]:
answer.append(1)
elif li[2] == j:
answer.append(1)
answer.append(3)
if li[1] == li[2]:
answer.append(2)
elif li[2] == l:
answer.append(1)
answer.append(2)
if li[1] == li[2]:
answer.append(3)
answer.sort()
return answer