제일 많이 맞춘 학생의 번호를 리턴하는 문제이다.
수포자들의 패턴을 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
문은 정답을 위해 써 주었다. 더 깔끔한 버전을 생각해보아야겠다.
결과는