input
실제 답안 리스트
output
수포자의 답안 리스트 반복해서(실제 답안길이만큼) 가장 문제 많이 맞힌 사람 return (동점가능)
반복문을 통해 실제 답안값과 각 수포자의 값을 비교했다.
이때 수포자의 답안코드가 일정 인덱스만큼 증가할수록 바뀌어야하기 때문에 각 수포자의 리스트마다 index를 다르게 설정했다.
return값의 경우 max값과 각 수포자의 점수를 비교하여 mamx값과 점수가 동일할시 list에 수포자를 추가하였다.
-> 런타임 에러
내 코드
def solution(answers): answer = [] s1 = [1,2,3,4,5] s2 = [2,1,2,3,2,4,2,5] s3 = [3,3,1,1,2,2,4,4,5,5] ss1, ss2, ss3 = 0, 0, 0 a = 0 b = 0 c = 0 i = 0 while i < len(answers): if answers[i] == s1[a]: ss1 += 1 if a == 4: a = 0 if answers[i] == s2[b]: ss2 += 1 if b == 7: b = 0 if answers[i] == s3[c]: ss3 += 1 if c == 9: c = 0 i += 1 a += 1 b += 1 c += 1 maxnum = max(ss1, ss2, ss3) if maxnum == ss1: answer.append(1) if maxnum == ss2: answer.append(2) if maxnum == ss3: answer.append(3) return answer
모범코드
def solution(answers): pattern1 = [1,2,3,4,5] pattern2 = [2,1,2,3,2,4,2,5] pattern3 = [3,3,1,1,2,2,4,4,5,5] score = [0, 0, 0] result = [] 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 for idx, s in enumerate(score): if s == max(score): result.append(idx+1)
반성)