def solution(answers):
score = [0,0,0,0] # 맞은 개수 count하는 리스트
max_score=0
one=[1,2,3,4,5]*2000 # 최대 길이(10000) list로 만듦
two=[2,1,2,3,2,4,2,5]*1250
three=[3,3,1,1,2,2,4,4,5,5]*1000
for i in range(len(answers)): # 정답 체크해서 점수 +1하는 반복문
if one[i]==answers[i]:
score[1]+=1
if two[i]==answers[i]:
score[2]+=1
if three[i]==answers[i]:
score[3]+=1
max_score=max(score) # 최고 점수 기록
answer=[ i for i in range(len(score)) if max_score ==score[i]] #최고점수 for문을 통해 추출 (단일값 뿐만 아니라 여러개 출력하기 위해서 반복문 사용, max함수로 골라낼 수 없기때문에)
return answer
마지막 부분에서 최고점수를 가지고있는 학생을 출력할 때, 여러명일 경우 어떻게 출력할지 고민을 했었다. 그 전에는 max함수로 단일값만 뽑아냈었기 떄문!
for 문을 사용해서 max값이면 index를 추출하는 형식으로 구현했다.
.
여기서, 나는 제한조건에 시험은 최대 10,000 문제로 구성되어있습니다.
를 보고 one, two, three 모두 최대 길이 list를 만들었는데
이 방법 말고도
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]
for i in range(len(answers)): # 정답 체크해서 점수 +1하는 반복문
if one[i%5]==answers[i]:
score[1]+=1
if two[i%8]==answers[i]:
score[2]+=1
if three[i%10]==answers[i]:
score[3]+=1
각 index를 %
를 활용해 구현하는 방법이 있다.
one 같은 경우는 1,2,3,4,5, 1,2,3,4,5, ,,
방식으로 반복적인 패턴을 가지니까
1번째 답도 1, 6번째 답도 1 이다. 즉, 5n+1번째 답은 무조건 1이라는 것이다!
그래서 굳이 최대길이 list를 만들지 안아도 구현할 수 있다.