제일 많이 맞춘 학생의 번호를 리턴하는 문제이다.
수포자들의 패턴을 10000개 이상으로 연속해서 나열하고 각각의 인덱스 값을 비교해보았다.
def solution(answers): answer = [] n1 = 0 n2 = 0 n3 = 0 no_1 = [1,2,3,4,5] * 2000 no_2 = [2,1,2,3,2,4,2,5] * 2000 no_3 = [3,3,1,1,2,2,4,4,5,5] * 2000 for i in range(len(answers)) : if answers[i] == no_1[i] : n1 += 1 if answers[i] == no_2[i] : n2 += 1 if answers[i] == no_3[i] : n3 += 1 if n1 == n2 : if n1 == n3 : answer.append(1) answer.append(2) answer.append(3) elif n1 > n3 : answer.append(1) answer.append(2) elif n1 < n3 : answer.append(3) elif n1 > n2 : if n1 == n3 : answer.append(1) answer.append(3) elif n1 > n3 : answer.append(1) elif n1 < n3 : answer.append(3) elif n2 > n1 : if n2 == n3 : answer.append(2) answer.append(3) elif n2 > n3 : answer.append(2) elif n2 < n3 : answer.append(3) return answer처음엔 10000개까지 딱 개수를 맞춰서 나열하는 방법을 고민했었다. 하지만 그냥 10000개 이상이면 괜찮을거 같아서 최소값을 기준으로 10000개이상은 2000을 곱해주면 되어서 대충 곱해주었다.
처음에는for문내부를if와elif로 구분했었는데,if에서 통과되면elif는 지나치게 되어서 한참을 헤메다가 전부if로 구분해주었다.
아래if문은 정답을 위해 써 주었다. 더 깔끔한 버전을 생각해보아야겠다.
결과는