A, B, C라는 학생이 모의고사를 다 찍을건데
A는 1, 2, 3, 4, 5
B는 2, 1, 2, 3, 2, 4, 2, 5
C는 3, 3, 1, 1, 2, 2, 4, 4, 5, 5
로 찍는다고 할 때 맞히는 개수가 많은 학생을 출력해주는 문제.
용도에 따라 두가지 메서드로 나눠줬다.
우선 카운트 메서드를 먼저 보자면
def counter(answers, supo):
value = 0
supo_len = len(supo)
for i in range(len(answers)):
if answers[i] == supo[i % supo_len]:
value += 1
return value
나머지(%)를 이용해서 정답이랑 비교를 해주고,
맞으면 value값을 증가시킨다.
아래는 실행 메서드
#모의고사
def solution(answer):
A = [1, 2, 3, 4, 5]
B = [2, 1, 2, 3, 2, 4, 2, 5]
C = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
answer_count = [0, 0, 0]
answer_count[0] = counter(answer, A)
answer_count[1] = counter(answer, B)
answer_count[2] = counter(answer, C)
m = max(answer_count)
k = [(i+1) for i in range(len(answer_count)) if answer_count[i] == m]
return k
A, B, C 학생들이 찍을 번호를 선언해주고
얼마나 많이 맞혔는지 확인해줄 answer_count를 선언해준다.
여기다가 counter 메서드를 이용해서 실제 맞힌 개수를 가져온다.
그리고 이 문제를 통과하기 위해서는 맞힌 개수가 동일한 친구들을 알려줘야 하는데,
리스트 안 for문을 이용해서,
가장 큰 값인 m과 같을 경우 k라는 배열에 넣어준다.
그리고 for문의 i는, 0부터 시작한다는 배열의 규칙이 있기 때문에 (i+1)을 해줘야 원하는 정답이 나온다.